{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "AppSchema": {
            "additionalProperties": false,
            "properties": {
                "description": {
                    "description": "The app's description.",
                    "title": "description",
                    "type": "string",
                    "maxLength": 1000
                },
                "id": {
                    "description": "A unique Atlassian Resource Identifier (ari) assigned to your app.",
                    "pattern": "ari:cloud:ecosystem::app/[^\\s]+",
                    "title": "id",
                    "type": "string"
                },
                "runtime": {
                    "additionalProperties": false,
                    "description": "Options related to the Forge Javascript runtime.",
                    "properties": {
                        "name": {
                            "description": "Name of the runtime to use for app execution.",
                            "title": "name",
                            "type": "string",
                            "enum": [
                                "nodejs20.x",
                                "nodejs22.x",
                                "nodejs24.x"
                            ]
                        },
                        "architecture": {
                            "description": "Lambda architecture, its value can be either 'x86_64' or 'arm64'. Default value is 'x86_64'.",
                            "title": "architecture",
                            "type": "string",
                            "enum": [
                                "x86_64",
                                "arm64"
                            ]
                        },
                        "memoryMB": {
                            "description": "The default amount of memory available to all functions at runtime. Increasing the function memory also increases its CPU allocation. You can configure memory between 128 MB and 1024 MB in 1-MB increments. The default value is 512 MB.",
                            "title": "memoryMB",
                            "type": "number"
                        }
                    },
                    "title": "runtime",
                    "type": "object",
                    "required": [
                        "name"
                    ]
                },
                "compatibility": {
                    "type": "object",
                    "title": "compatibility",
                    "description": "The app compatibility configuration. If not set, app is not a cross-context or global app.",
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                        "confluence": {
                            "type": "object",
                            "properties": {
                                "required": {
                                    "enum": [
                                        true,
                                        false
                                    ]
                                }
                            },
                            "additionalProperties": false
                        },
                        "jira": {
                            "type": "object",
                            "properties": {
                                "required": {
                                    "enum": [
                                        true,
                                        false
                                    ]
                                }
                            },
                            "additionalProperties": false
                        },
                        "compass": {
                            "type": "object",
                            "properties": {
                                "required": {
                                    "enum": [
                                        true,
                                        false
                                    ]
                                }
                            },
                            "additionalProperties": false
                        }
                    }
                },
                "access": {
                    "additionalProperties": false,
                    "required": [
                        "userAccess"
                    ],
                    "type": "object",
                    "title": "access",
                    "description": "Options related to app access control",
                    "properties": {
                        "userAccess": {
                            "type": "boolean",
                            "default": false,
                            "title": "userAccess",
                            "description": "Whether to enable user access control for this app. Default value of false."
                        }
                    }
                },
                "licensing": {
                    "additionalProperties": false,
                    "required": [
                        "enabled"
                    ],
                    "type": "object",
                    "title": "licensing",
                    "description": "Options related to paid app licensing",
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "default": false,
                            "title": "enabled",
                            "description": "Whether to enable paid app licensing for production installations of this app. Default value of false."
                        },
                        "editionsEnabled": {
                            "type": "boolean",
                            "default": false,
                            "title": "editionsEnabled",
                            "description": "Whether to enable editions for this app. Default value of false."
                        },
                        "modes": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "user-access"
                                ]
                            },
                            "title": "modes",
                            "description": "Declares the licensing modes supported by this app. One of the declared modes may be selected as the active mode when the app is listed on the Marketplace. If no value is specified, the legacy coupled licensing mode is assumed by default."
                        }
                    }
                },
                "features": {
                    "additionalProperties": false,
                    "type": "object",
                    "title": "features",
                    "description": "Features related to app",
                    "properties": {
                        "autoUserConsent": {
                            "type": "boolean",
                            "default": false,
                            "title": "autoUserConsent",
                            "description": "This property is deprecated and no longer required to use simplified user consent. Please remove it from your manifest as in a future release this will become an error."
                        }
                    }
                },
                "connect": {
                    "additionalProperties": false,
                    "required": [
                        "key"
                    ],
                    "type": "object",
                    "title": "connect",
                    "description": "Connect Configuration for the forge app.",
                    "properties": {
                        "key": {
                            "type": "string",
                            "description": "The app's connect key",
                            "minLength": 1,
                            "maxLength": 90,
                            "pattern": "^[a-zA-Z0-9-._]+$",
                            "title": "key"
                        },
                        "remote": {
                            "type": "string",
                            "description": "A key for the remote, which other modules can refer to. Must be unique within the manifest and have a maximum of 23 characters.",
                            "pattern": "^[a-zA-Z0-9_-]+$",
                            "maxLength": 23
                        },
                        "authentication": {
                            "description": "The type of authentication used to communicate with tenant APIs",
                            "type": "string",
                            "default": "jwt",
                            "enum": [
                                "jwt"
                            ]
                        }
                    }
                },
                "storage": {
                    "type": "object",
                    "description": "Options related to hosted storage",
                    "additionalProperties": false,
                    "properties": {
                        "classifications": {
                            "description": "Labels to classify the type of data stored",
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ugc",
                                    "pii",
                                    "other"
                                ]
                            },
                            "minItems": 1
                        },
                        "entities": {
                            "description": "Custom schemas for app stored entities.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "required": [
                                    "name",
                                    "attributes"
                                ],
                                "additionalProperties": false,
                                "properties": {
                                    "name": {
                                        "description": "A name for the entity. Must be unique within the manifest and have a maximum of 60 characters.",
                                        "type": "string",
                                        "pattern": "^(?![_\\.-])(?!.*\\.{2})[a-z0-9:\\-_.]*(?<![.])$",
                                        "minLength": 3,
                                        "maxLength": 60
                                    },
                                    "attributes": {
                                        "description": "Attributes of the entity.",
                                        "type": "object",
                                        "patternProperties": {
                                            "^[a-zA-Z][a-zA-Z0-9_]*$": {
                                                "description": "An attribute of the entity. Must be unique within the entity and have a maximum of 30 characters.",
                                                "type": "object",
                                                "required": [
                                                    "type"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "type": {
                                                        "description": "The data type for the given attribute.",
                                                        "type": "string",
                                                        "enum": [
                                                            "string",
                                                            "boolean",
                                                            "float",
                                                            "integer",
                                                            "any"
                                                        ]
                                                    }
                                                }
                                            }
                                        },
                                        "additionalProperties": false
                                    },
                                    "indexes": {
                                        "description": "Indexes on attributes of the schema.",
                                        "type": "array",
                                        "items": {
                                            "oneOf": [
                                                {
                                                    "type": "string"
                                                },
                                                {
                                                    "type": "object",
                                                    "required": [
                                                        "name",
                                                        "range"
                                                    ],
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "range": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            },
                                                            "minItems": 1
                                                        },
                                                        "partition": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            },
                                                            "minItems": 1
                                                        }
                                                    }
                                                }
                                            ]
                                        },
                                        "minItems": 1
                                    }
                                }
                            },
                            "minItems": 1
                        }
                    }
                },
                "package": {
                    "additionalProperties": false,
                    "description": "Options for packaging the Forge app.",
                    "properties": {
                        "bundler": {
                            "description": "Bundler to use for packaging the runtime code.",
                            "type": "string",
                            "enum": [
                                "webpack",
                                "typescript",
                                "manual@2026"
                            ]
                        },
                        "path": {
                            "description": "For manual packaging, path where the packaged runtime code is located.",
                            "type": "string"
                        },
                        "extraFiles": {
                            "description": "A list of files to include in the Forge app package.",
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "title": "package",
                    "type": "object"
                }
            },
            "required": [
                "id",
                "runtime"
            ],
            "title": "AppSchema",
            "type": "object"
        },
        "ConnectModuleSchema": {
            "properties": {
                "lifecycle": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "required": [
                            "key",
                            "event",
                            "remote",
                            "url"
                        ],
                        "properties": {
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "event": {
                                "enum": [
                                    "installed",
                                    "uninstalled"
                                ]
                            },
                            "remote": {
                                "type": "string"
                            },
                            "url": {
                                "type": "string"
                            }
                        },
                        "additionalProperties": false
                    },
                    "minItems": 1
                }
            },
            "title": "ConnectModuleSchema",
            "type": "object"
        },
        "ModuleSchema": {
            "properties": {
                "trigger": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "oneOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "events": {
                                        "oneOf": [
                                            {
                                                "$ref": "#/definitions/ProductEvents"
                                            },
                                            {
                                                "$ref": "#/definitions/FilteredProductEvents"
                                            }
                                        ],
                                        "title": "events"
                                    },
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "function",
                                        "type": "string"
                                    },
                                    "filter": {
                                        "$ref": "#/definitions/ProductEventsFilter",
                                        "title": "filter",
                                        "type": "object"
                                    },
                                    "payload": {
                                        "$ref": "#/definitions/PayloadInclude",
                                        "title": "payload",
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "events",
                                    "function",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "events": {
                                        "oneOf": [
                                            {
                                                "$ref": "#/definitions/ProductEvents"
                                            },
                                            {
                                                "$ref": "#/definitions/FilteredProductEvents"
                                            }
                                        ],
                                        "title": "events"
                                    },
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "endpoint",
                                        "type": "string"
                                    },
                                    "filter": {
                                        "$ref": "#/definitions/ProductEventsFilter",
                                        "title": "filter",
                                        "type": "object"
                                    },
                                    "payload": {
                                        "$ref": "#/definitions/PayloadInclude",
                                        "title": "payload",
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "events",
                                    "endpoint",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "webtrigger": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": true,
                        "oneOf": [
                            {
                                "properties": {
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the function that should be invoked for this webtrigger.",
                                        "title": "function",
                                        "type": "string"
                                    },
                                    "request": {
                                        "$ref": "#/definitions/RequestOptions",
                                        "description": "Request options for the webtrigger module.",
                                        "title": "request"
                                    },
                                    "response": {
                                        "$ref": "#/definitions/ResponseOptions",
                                        "description": "Response options for the webtrigger module.",
                                        "title": "response"
                                    },
                                    "urlFormat": {
                                        "$ref": "#/definitions/UrlFormat"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "properties": {
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the service that should be invoked for this webtrigger."
                                    },
                                    "request": {
                                        "$ref": "#/definitions/RequestOptions",
                                        "description": "Request options for the webtrigger module."
                                    },
                                    "response": {
                                        "$ref": "#/definitions/ResponseOptions"
                                    },
                                    "urlFormat": {
                                        "$ref": "#/definitions/UrlFormat"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "endpoint",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ],
                        "type": "object"
                    },
                    "minItems": 1
                },
                "apiRoute": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "path": {
                                "type": "string",
                                "description": "The URL path for the API endpoint",
                                "pattern": "^/[a-zA-Z0-9]+(/[a-zA-Z0-9]+|/\\*)*/\\*\\*$|^/[a-zA-Z0-9]+(/[a-zA-Z0-9]+|/\\*)*$",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "operation": {
                                "type": "string",
                                "description": "HTTP method for the API endpoint",
                                "enum": [
                                    "GET",
                                    "POST",
                                    "PUT",
                                    "DELETE",
                                    "PATCH"
                                ]
                            },
                            "function": {
                                "$ref": "#/definitions/ExtensionKey",
                                "description": "The key of the function that should be invoked for this API route",
                                "title": "function",
                                "type": "string"
                            },
                            "accept": {
                                "type": "array",
                                "description": "List of accepted content types for the API route",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "application/json"
                                    ]
                                },
                                "minItems": 1
                            },
                            "scopes": {
                                "type": "array",
                                "uniqueItems": true,
                                "description": "List of scopes required to access this API route",
                                "items": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100,
                                    "pattern": "^[-.:_a-zA-Z0-9]{1,93}:custom$"
                                },
                                "minItems": 1,
                                "maxItems": 20
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "path",
                            "operation",
                            "function",
                            "scopes",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "consumer": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "type": "object",
                        "oneOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "queue": {
                                        "$ref": "#/definitions/ConsumerQueue"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "$ref": "#/definitions/ExtensionKey"
                                                    },
                                                    "method": {
                                                        "type": "string",
                                                        "description": "The method to invoke when events in this queue are processed.",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function",
                                                    "method"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "description": "workflow resolver that handlers the event consumer",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "workflow": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "workflow"
                                                ]
                                            }
                                        ]
                                    },
                                    "crossVersion": {
                                        "$ref": "#/definitions/crossVersion"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "queue",
                                    "resolver",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "queue": {
                                        "$ref": "#/definitions/ConsumerQueue"
                                    },
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the endpoint that should be invoked when consuming events."
                                    },
                                    "crossVersion": {
                                        "$ref": "#/definitions/crossVersion"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "queue",
                                    "endpoint",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "queue": {
                                        "$ref": "#/definitions/ConsumerQueue"
                                    },
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the function that should be invoked when consuming events."
                                    },
                                    "crossVersion": {
                                        "$ref": "#/definitions/crossVersion"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "queue",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "scheduledTrigger": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "oneOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the function that should be invoked for this scheduledTrigger.",
                                        "title": "function"
                                    },
                                    "interval": {
                                        "description": "The interval at which to trigger function invocation.",
                                        "enum": [
                                            "fiveMinute",
                                            "hour",
                                            "day",
                                            "week"
                                        ],
                                        "title": "interval",
                                        "type": "string"
                                    },
                                    "filter": {
                                        "$ref": "#/definitions/ScheduledTriggerFilter",
                                        "title": "filter",
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "interval",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "endpoint",
                                        "type": "string"
                                    },
                                    "interval": {
                                        "description": "The interval at which to trigger function invocation.",
                                        "enum": [
                                            "fiveMinute",
                                            "hour",
                                            "day",
                                            "week"
                                        ],
                                        "title": "interval",
                                        "type": "string"
                                    },
                                    "filter": {
                                        "$ref": "#/definitions/ScheduledTriggerFilter",
                                        "title": "filter",
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "endpoint",
                                    "interval",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "preUninstall": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "oneOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "The key of the function that should be invoked for this lifecycle trigger.",
                                        "title": "function"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "endpoint",
                                        "type": "string"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "endpoint",
                                    "key"
                                ],
                                "type": "object",
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "fifoConsumer": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "queue": {
                                "$ref": "#/definitions/ConsumerQueue"
                            },
                            "function": {
                                "$ref": "#/definitions/ExtensionKey",
                                "description": "The key of the function that should be invoked when consuming events."
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "queue",
                            "function",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "function": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "description": "A Forge Function definition.",
                        "type": "object",
                        "properties": {
                            "handler": {
                                "description": "The method, within the index.js function, that will be called to invoke the function.",
                                "maxLength": 1024,
                                "minLength": 1,
                                "title": "handler",
                                "type": "string"
                            },
                            "cleanup": {
                                "description": "Whether this function is used for GDPR cleanup (default false). If set to true, this function has a higher rate limit for ESS list queries.",
                                "title": "cleanup",
                                "type": "boolean"
                            },
                            "outboundAuthContainerId": {
                                "maxLength": 1024,
                                "minLength": 1,
                                "type": "string"
                            },
                            "functions": {
                                "description": "A collection where the key represents the region name and the value contains the metadata of the function, including the lambda ARN and Runtime.",
                                "type": "object",
                                "additionalProperties": {
                                    "type": "object",
                                    "properties": {
                                        "function": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "runtime": {
                                            "oneOf": [
                                                {
                                                    "$ref": "#/definitions/RuntimeLayer"
                                                },
                                                {
                                                    "$ref": "#/definitions/RuntimeWrapper"
                                                }
                                            ]
                                        }
                                    }
                                }
                            },
                            "providers": {
                                "$ref": "#/definitions/ExternalAuthFunctionProviders"
                            },
                            "timeoutSeconds": {
                                "description": "The maximum amount of time the function is allowed to run, in seconds. Must be between 1 and 900.",
                                "maximum": 900,
                                "minimum": 1,
                                "title": "timeoutSeconds",
                                "type": "number"
                            },
                            "runtime": {
                                "type": "object",
                                "additionalProperties": false,
                                "description": "Function Runtime configuration",
                                "title": "runtime",
                                "properties": {
                                    "memoryMB": {
                                        "type": "number",
                                        "title": "memoryMB",
                                        "description": "The amount of memory available to this function at runtime. Increasing the function memory also increases its CPU allocation. You can configure memory between 128 MB and 1024 MB in 1-MB increments. The default value is 512 MB.",
                                        "minimum": 128,
                                        "maximum": 4096
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "handler",
                            "key"
                        ],
                        "additionalProperties": false,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "workflow": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "description": "A Forge Workflow definition.",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "startAt": {
                                "type": "string"
                            },
                            "states": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/definitions/FunctionState"
                                },
                                "minItems": 1
                            }
                        },
                        "required": [
                            "startAt",
                            "states",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "migration": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "listenerTriggered": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "appDataUploaded": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    }
                                }
                            }
                        ],
                        "properties": {
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ]
                    },
                    "minItems": 1
                },
                "endpoint": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": true,
                        "description": "A Forge Remote endpoint definition.",
                        "oneOf": [
                            {
                                "properties": {
                                    "remote": {
                                        "description": "key for the remotes definition",
                                        "maxLength": 255,
                                        "minLength": 1,
                                        "pattern": "^[a-zA-Z0-9-_]+$",
                                        "type": "string"
                                    },
                                    "route": {
                                        "$ref": "#/definitions/EndpointRoute"
                                    },
                                    "auth": {
                                        "$ref": "#/definitions/EndpointAuth"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "remote",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "properties": {
                                    "service": {
                                        "description": "key for the service definition",
                                        "maxLength": 25,
                                        "minLength": 1,
                                        "pattern": "^[a-z]([a-z0-9-]{0,23}[a-z0-9])?$",
                                        "type": "string"
                                    },
                                    "route": {
                                        "$ref": "#/definitions/EndpointRoute"
                                    },
                                    "auth": {
                                        "$ref": "#/definitions/EndpointAuth"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "service",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ],
                        "type": "object"
                    },
                    "minItems": 1
                },
                "remote": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": true,
                        "description": "A Forge Remote definition.",
                        "properties": {
                            "regionBaseUrls": {
                                "type": "object",
                                "propertyNames": {
                                    "enum": [
                                        "EU",
                                        "US",
                                        "AU",
                                        "DE",
                                        "SG",
                                        "CA",
                                        "IN",
                                        "KR",
                                        "JP",
                                        "GB",
                                        "CH",
                                        "default"
                                    ]
                                },
                                "patternProperties": {
                                    ".+": {
                                        "type": "string",
                                        "minLength": 1
                                    }
                                },
                                "required": [
                                    "default"
                                ]
                            },
                            "baseUrl": {
                                "oneOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "type": "object",
                                        "propertyNames": {
                                            "enum": [
                                                "EU",
                                                "US",
                                                "AU",
                                                "DE",
                                                "SG",
                                                "CA",
                                                "IN",
                                                "KR",
                                                "JP",
                                                "GB",
                                                "CH",
                                                "default"
                                            ]
                                        },
                                        "patternProperties": {
                                            ".+": {
                                                "type": "string",
                                                "minLength": 1
                                            }
                                        },
                                        "required": [
                                            "default"
                                        ]
                                    }
                                ]
                            },
                            "operations": {
                                "type": "array",
                                "items": {
                                    "enum": [
                                        "storage",
                                        "other",
                                        "compute",
                                        "fetch"
                                    ]
                                },
                                "minItems": 1
                            },
                            "auth": {
                                "type": "object",
                                "properties": {
                                    "appUserToken": {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Enable sharing user token with the remote"
                                            }
                                        },
                                        "required": [
                                            "enabled"
                                        ]
                                    },
                                    "appSystemToken": {
                                        "type": "object",
                                        "properties": {
                                            "enabled": {
                                                "type": "boolean",
                                                "description": "Enable sharing app token with the remote"
                                            }
                                        },
                                        "required": [
                                            "enabled"
                                        ]
                                    }
                                }
                            },
                            "storage": {
                                "type": "object",
                                "properties": {
                                    "inScopeEUD": {
                                        "type": "boolean"
                                    }
                                }
                            },
                            "configurable": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "The name that an admin will see when they're configuring the remote"
                                    },
                                    "description": {
                                        "type": "string",
                                        "description": "The description that an admin will see when they're configuring the remote"
                                    },
                                    "supportedPatterns": {
                                        "type": "array",
                                        "description": "The domains that are supported for this remote, prefixed with a * wildcard. For example, `*.atlassian.net` would allow this remote to communicate with domains that matched atlassian.net domains.",
                                        "items": {
                                            "type": "string",
                                            "pattern": "^\\*"
                                        }
                                    }
                                },
                                "required": [
                                    "name",
                                    "description"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "type": "object",
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "action": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "description": {
                                        "description": "The description that the Rovo agent will use to decide when to invoke this action.",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "actionType": {
                                        "description": "The action-type defines the action inputs and how actions can be categorised and discovered.\neg an action-type atlassian:issue:create:comment defines the inputs issueId and comment.\nDifferent implementations of actions with action-type of atlassian:issue:create:comment can be\nswapped depending on what integrations a tenant might have.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9\\-_:]+$"
                                    },
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "Name of the key of the function that will handle this action.",
                                        "title": "function",
                                        "type": "string"
                                    },
                                    "name": {
                                        "description": "The name of the action",
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "description": "The url for the icon image to be displayed in the UI",
                                        "type": "string"
                                    },
                                    "config": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "description",
                                    "actionType",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "description": {
                                        "description": "The description that the Rovo agent will use to decide when to invoke this action.",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "function": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "description": "Name of the key of the function that will handle this action.",
                                        "title": "function",
                                        "type": "string"
                                    },
                                    "name": {
                                        "description": "The name of the action",
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "description": "The url for the icon image to be displayed in the UI",
                                        "type": "string"
                                    },
                                    "config": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "actionVerb": {
                                        "description": "The operation that will be performed as a result of calling this action",
                                        "type": "string",
                                        "enum": [
                                            "CREATE",
                                            "UPDATE",
                                            "DELETE",
                                            "TRIGGER",
                                            "GET"
                                        ]
                                    },
                                    "inputs": {
                                        "type": "object",
                                        "additionalProperties": {
                                            "$ref": "#/definitions/ActionInput"
                                        },
                                        "maxProperties": 10
                                    },
                                    "outputContext": {
                                        "$ref": "#/definitions/OutputContext",
                                        "description": "Defines the shape of the output entity returned by this action"
                                    },
                                    "outputs": {
                                        "type": "object",
                                        "additionalProperties": {
                                            "$ref": "#/definitions/ActionOutput"
                                        },
                                        "maxProperties": 10
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "description",
                                    "actionVerb",
                                    "key"
                                ],
                                "allOf": [
                                    {
                                        "if": {
                                            "required": [
                                                "outputs"
                                            ]
                                        },
                                        "then": {
                                            "required": [
                                                "outputContext"
                                            ]
                                        }
                                    }
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "description": {
                                        "description": "The description that the Rovo agent will use to decide when to invoke this action.",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "name": {
                                        "description": "The name of the action",
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "description": "The url for the icon image to be displayed in the UI",
                                        "type": "string"
                                    },
                                    "config": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "endpoint",
                                        "type": "string"
                                    },
                                    "actionVerb": {
                                        "description": "The operation that will be performed as a result of calling this action",
                                        "type": "string",
                                        "enum": [
                                            "CREATE",
                                            "UPDATE",
                                            "DELETE",
                                            "TRIGGER",
                                            "GET"
                                        ]
                                    },
                                    "inputs": {
                                        "type": "object",
                                        "additionalProperties": {
                                            "$ref": "#/definitions/ActionInput"
                                        },
                                        "maxProperties": 10
                                    },
                                    "outputs": {
                                        "type": "object",
                                        "additionalProperties": {
                                            "$ref": "#/definitions/ActionOutput"
                                        },
                                        "maxProperties": 10
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "endpoint",
                                    "description",
                                    "actionVerb",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "config": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "description": {
                                        "description": "The description that the Rovo agent will use to decide when to invoke this action.",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "actionType": {
                                        "description": "The action-type defines the action inputs and how actions can be categorised and discovered.\neg an action-type atlassian:issue:create:comment defines the inputs issueId and comment.\nDifferent implementations of actions with action-type of atlassian:issue:create:comment can be\nswapped depending on what integrations a tenant might have.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9\\-_:]+$"
                                    },
                                    "endpoint": {
                                        "$ref": "#/definitions/ExtensionKey",
                                        "title": "endpoint",
                                        "type": "string"
                                    },
                                    "name": {
                                        "description": "The name of the action",
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "description": "The url for the icon image to be displayed in the UI",
                                        "type": "string"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "endpoint",
                                    "description",
                                    "actionType",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "sql": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "engine": {
                                "type": "string",
                                "enum": [
                                    "mysql"
                                ],
                                "description": "The SQL engine to be used for storage"
                            },
                            "dareCompliant": {
                                "type": "boolean",
                                "description": "Whether the SQL storage is compliant data residency requirements. This will be set to false while sql is in preview and true when sql goes GA"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "engine",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "objectStore": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "storageClass": {
                                "type": "string",
                                "enum": [
                                    "standard"
                                ],
                                "description": "The storage class to be used for object storage"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "storageClass",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "event": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "The name of the event."
                            },
                            "allowedRecipients": {
                                "type": "array",
                                "uniqueItems": true,
                                "maxItems": 100,
                                "items": {
                                    "type": "string"
                                },
                                "description": "The list of apps that can received this event.\nIt can contain either app ARIs (in the following format: `ari:cloud:ecosystem::app/<UUID>`),\nor the special wildcard value `*`, which enables anyone to listen to the event.\nThe empty array means that only your app can receive the event.\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "allowedRecipients",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "llm": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "model": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "claude"
                                    ]
                                },
                                "description": "The LLM families to use."
                            },
                            "modelDisplayNames": {
                                "type": "array",
                                "description": "Optional mapping of included models to corresponding display names.",
                                "items": {
                                    "type": "object",
                                    "minProperties": 1,
                                    "maxProperties": 10,
                                    "additionalProperties": {
                                        "type": "string"
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "model",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connectToForgeMigration": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "migrationGuideUrl": {
                                "description": "The URL of the migration guide hosted by the app developer.",
                                "type": "string",
                                "pattern": "^https://",
                                "maxLength": 2048
                            },
                            "willMigrateToForgeBeforeEOS": {
                                "description": "Whether the app developer has committed to moving to fully Forge.",
                                "type": "string",
                                "enum": [
                                    "YES",
                                    "NO",
                                    "UNDECIDED"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "migrationGuideUrl",
                            "willMigrateToForgeBeforeEOS",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "macro": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 10000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "refDataSchema": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "inputType": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "inputType"
                                        ]
                                    },
                                    "config": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        }
                                    },
                                    "autoConvert": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "matchers": {
                                                "type": "array",
                                                "minItems": 1,
                                                "items": {
                                                    "type": "object",
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "pattern": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 1024
                                                        }
                                                    },
                                                    "required": [
                                                        "pattern"
                                                    ]
                                                }
                                            }
                                        },
                                        "required": [
                                            "matchers"
                                        ]
                                    },
                                    "data": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            },
                                            "schema": {
                                                "type": "string",
                                                "enum": [
                                                    "confluence/macro_homepage"
                                                ]
                                            }
                                        }
                                    },
                                    "layout": {
                                        "enum": [
                                            "inline",
                                            "block"
                                        ],
                                        "type": "string",
                                        "default": "block"
                                    },
                                    "hidden": {
                                        "type": "boolean"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "migratedFrom": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 20,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "pattern": "^[a-zA-Z0-9-._]+$"
                                        }
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 10000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "adfExport": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "static": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "refDataSchema": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "inputType": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "inputType"
                                        ]
                                    },
                                    "config": {
                                        "oneOf": [
                                            {
                                                "type": "boolean",
                                                "description": "Enable config for UI Kit 2"
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "minProperties": 1,
                                                "properties": {
                                                    "openOnInsert": {
                                                        "type": "boolean"
                                                    },
                                                    "parameters": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "identifier": {
                                                                    "type": "string",
                                                                    "description": "A unique identifier for the parameter. Must start with a letter and contain only alphanumeric characters, dashes, and underscores (camelCase is supported).\n",
                                                                    "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
                                                                    "minLength": 1,
                                                                    "maxLength": 255
                                                                },
                                                                "type": {
                                                                    "type": "string",
                                                                    "enum": [
                                                                        "string",
                                                                        "confluence-content",
                                                                        "attachment",
                                                                        "spacekey"
                                                                    ]
                                                                },
                                                                "indexing": {
                                                                    "type": "object",
                                                                    "additionalProperties": false,
                                                                    "properties": {
                                                                        "enabled": {
                                                                            "type": "boolean"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "required": [
                                                                "identifier",
                                                                "type"
                                                            ]
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "title": {
                                                        "oneOf": [
                                                            {
                                                                "type": "object",
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "i18n": {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 300,
                                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "i18n"
                                                                ]
                                                            },
                                                            {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        ]
                                                    },
                                                    "title__i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    },
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "enum": [
                                                            "native",
                                                            "default"
                                                        ],
                                                        "type": "string",
                                                        "default": "default"
                                                    },
                                                    "renderRuntimeType": {
                                                        "enum": [
                                                            "webworker",
                                                            "iframe"
                                                        ],
                                                        "type": "string",
                                                        "default": "iframe"
                                                    },
                                                    "viewportSize": {
                                                        "oneOf": [
                                                            {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "enum": [
                                                                    "small",
                                                                    "medium",
                                                                    "large",
                                                                    "xlarge",
                                                                    "max",
                                                                    "fullscreen",
                                                                    "resizable"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "width": {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    "height": {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    }
                                                                },
                                                                "required": [
                                                                    "width"
                                                                ]
                                                            }
                                                        ]
                                                    },
                                                    "openOnInsert": {
                                                        "type": "boolean"
                                                    },
                                                    "icon": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    },
                                                    "parameters": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "identifier": {
                                                                    "type": "string",
                                                                    "description": "A unique identifier for the parameter. Must start with a letter and contain only alphanumeric characters, dashes, and underscores (camelCase is supported).\n",
                                                                    "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
                                                                    "minLength": 1,
                                                                    "maxLength": 255
                                                                },
                                                                "type": {
                                                                    "type": "string",
                                                                    "enum": [
                                                                        "string",
                                                                        "confluence-content",
                                                                        "attachment",
                                                                        "spacekey"
                                                                    ]
                                                                },
                                                                "indexing": {
                                                                    "type": "object",
                                                                    "additionalProperties": false,
                                                                    "properties": {
                                                                        "enabled": {
                                                                            "type": "boolean"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "required": [
                                                                "identifier",
                                                                "type"
                                                            ]
                                                        }
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            }
                                        ]
                                    },
                                    "autoConvert": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "matchers": {
                                                "type": "array",
                                                "minItems": 1,
                                                "items": {
                                                    "type": "object",
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "pattern": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 1024
                                                        }
                                                    },
                                                    "required": [
                                                        "pattern"
                                                    ]
                                                }
                                            }
                                        },
                                        "required": [
                                            "matchers"
                                        ]
                                    },
                                    "data": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            },
                                            "schema": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        }
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "layout": {
                                        "enum": [
                                            "inline",
                                            "block",
                                            "bodied"
                                        ],
                                        "type": "string",
                                        "default": "block"
                                    },
                                    "emitsReadyEvent": {
                                        "type": "boolean"
                                    },
                                    "hidden": {
                                        "type": "boolean"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "migration:dataResidency": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "description": "A Forge data residency definition.",
                        "additionalProperties": false,
                        "properties": {
                            "remote": {
                                "description": "key for the data residency remote definition",
                                "maxLength": 255,
                                "minLength": 1,
                                "pattern": "^[a-zA-Z0-9-_]+$",
                                "type": "string"
                            },
                            "path": {
                                "title": "path",
                                "minLength": 1,
                                "maxLength": 500,
                                "description": "Data residency migration hook path",
                                "type": "string"
                            },
                            "maxMigrationDurationHours": {
                                "title": "maxMigrationDurationHours",
                                "type": "number",
                                "default": 24,
                                "multipleOf": 0.5,
                                "minimum": 0.5,
                                "maximum": 24
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "remote",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "dashboards:widget": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "description": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 1000
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 23,
                                "pattern": "^[a-zA-Z0-9_\\-]+$"
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "edit": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "ai-context": {
                                "type": "object",
                                "properties": {
                                    "data": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    }
                                },
                                "required": [
                                    "data"
                                ]
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "thumbnail": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "title",
                            "thumbnail",
                            "description",
                            "resource",
                            "edit",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "dashboards:backgroundScript": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 23,
                                "pattern": "^[a-zA-Z0-9_\\-]+$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "confluence:contextMenu": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contentAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "enum": [
                                                    "small",
                                                    "medium",
                                                    "large",
                                                    "xlarge",
                                                    "max",
                                                    "resizable"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "width": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    },
                                                    "height": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "width"
                                                ]
                                            }
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contentBylineItem": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "tooltip": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "tooltip__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "dynamicProperties": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "tooltip": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "tooltip__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "dynamicProperties": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "contentPropertyKey": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "enum": [
                                                    "small",
                                                    "medium",
                                                    "large",
                                                    "fullscreen",
                                                    "resizable"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "width": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    },
                                                    "height": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "width"
                                                ]
                                            }
                                        ]
                                    },
                                    "viewportContainer": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "popup",
                                            "modal"
                                        ],
                                        "default": "popup"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "if": {
                                    "properties": {
                                        "viewportSize": {
                                            "type": "object"
                                        }
                                    },
                                    "required": [
                                        "viewportSize"
                                    ]
                                },
                                "then": {
                                    "properties": {
                                        "viewportContainer": {
                                            "const": "modal"
                                        }
                                    },
                                    "required": [
                                        "viewportContainer"
                                    ]
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:homepageFeed": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge",
                                            "max"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:spacePage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:spaceSettings": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:globalSettings": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "useAsConfig": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "A flag indicating whether this settings instance will be used as the app's configuration"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "A flag indicating whether this settings instance will be used as the app's \"Get Started\""
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "useAsConfig": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "A flag indicating whether this settings instance will be used as the app's configuration"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "A flag indicating whether this settings instance will be used as the app's \"Get Started\""
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:globalPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "route": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "keyboardShortcut": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "accelerator": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "description": "Keyboard key(s)/combination(s) used to trigger this module."
                                            },
                                            "description": {
                                                "oneOf": [
                                                    {
                                                        "type": "object",
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 1000
                                                    }
                                                ]
                                            },
                                            "description__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:fullPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "routePrefix",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "routePrefix",
                                    "render",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:customContent": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "bodyType": {
                                        "type": "string",
                                        "enum": [
                                            "raw",
                                            "storage"
                                        ]
                                    },
                                    "supportedContainerTypes": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "pattern": "^space$|^page$|^blogpost$|^this:[a-zA-Z0-9-]+$"
                                        }
                                    },
                                    "supportedChildTypes": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "pattern": "^attachment$|^comment$|^this:[a-zA-Z0-9-]+$"
                                        }
                                    },
                                    "supportedSpacePermissions": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "read",
                                                "create",
                                                "delete"
                                            ]
                                        }
                                    },
                                    "indexing": {
                                        "type": "boolean"
                                    },
                                    "preventDuplicateTitle": {
                                        "type": "boolean"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "supportedContainerTypes",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "bodyType": {
                                        "type": "string",
                                        "enum": [
                                            "raw",
                                            "storage"
                                        ]
                                    },
                                    "supportedContainerTypes": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "pattern": "^space$|^page$|^blogpost$|^this:[a-zA-Z0-9-]+$"
                                        }
                                    },
                                    "supportedChildTypes": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "pattern": "^attachment$|^comment$|^this:[a-zA-Z0-9-]+$"
                                        }
                                    },
                                    "supportedSpacePermissions": {
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "read",
                                                "create",
                                                "delete"
                                            ]
                                        }
                                    },
                                    "indexing": {
                                        "type": "boolean"
                                    },
                                    "preventDuplicateTitle": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "migratedFromConnect": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "A flag indicating whether this custom content module was migrated from a Connect app."
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "supportedContainerTypes",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:backgroundScript": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:pageBanner": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contentProperty": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "propertyKey": {
                                "minLength": 1,
                                "maxLength": 100,
                                "type": "string"
                            },
                            "values": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "path": {
                                            "minLength": 1,
                                            "maxLength": 1000,
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string",
                                            "enum": [
                                                "number",
                                                "string",
                                                "text",
                                                "user",
                                                "date"
                                            ]
                                        },
                                        "searchAlias": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "pattern": "^[a-zA-Z0-9._-]+$",
                                            "type": "string"
                                        },
                                        "uiSupport": {
                                            "type": "object",
                                            "properties": {
                                                "defaultOperator": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 100
                                                },
                                                "valueType": {
                                                    "type": "string",
                                                    "enum": [
                                                        "space",
                                                        "label",
                                                        "user",
                                                        "contentId",
                                                        "contentType",
                                                        "date",
                                                        "string",
                                                        "number"
                                                    ]
                                                },
                                                "name": {
                                                    "oneOf": [
                                                        {
                                                            "type": "object",
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        },
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 1500
                                                        }
                                                    ]
                                                },
                                                "name__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "tooltip": {
                                                    "oneOf": [
                                                        {
                                                            "type": "object",
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        },
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 1500
                                                        }
                                                    ]
                                                },
                                                "tooltip__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                }
                                            },
                                            "required": [
                                                "name",
                                                "valueType"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "path",
                                        "type"
                                    ]
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "propertyKey",
                            "values",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:workflowValidator": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "name__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "description": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "description__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "expression": {
                                "type": "string"
                            },
                            "errorMessage": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    },
                                    {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    {
                                        "type": "string"
                                    }
                                ]
                            },
                            "errorMessage__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "view": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "edit": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "create": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "projectTypes": {
                                "default": [
                                    "company-managed"
                                ],
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "team-managed",
                                        "company-managed"
                                    ]
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:entityPropertySet": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "properties": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "propertyKey": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "type": "string"
                                        },
                                        "entityType": {
                                            "default": "issue",
                                            "enum": [
                                                "issue",
                                                "project",
                                                "user"
                                            ],
                                            "type": "string"
                                        },
                                        "values": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "path": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "enum": [
                                                            "number",
                                                            "string",
                                                            "text",
                                                            "user",
                                                            "date"
                                                        ]
                                                    },
                                                    "searchAlias": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9._-]+$",
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "path",
                                                    "type"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "propertyKey",
                                        "values"
                                    ]
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "properties",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:entityProperty": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "propertyKey": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "entityType": {
                                "default": "issue",
                                "enum": [
                                    "issue",
                                    "project",
                                    "user"
                                ],
                                "type": "string"
                            },
                            "values": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "path": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string",
                                            "enum": [
                                                "number",
                                                "string",
                                                "text",
                                                "user",
                                                "date"
                                            ]
                                        },
                                        "searchAlias": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "pattern": "^[a-zA-Z0-9._-]+$",
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "path",
                                        "type"
                                    ]
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "propertyKey",
                            "values",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:customField": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            },
                                            "formatter": {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    },
                                                    "export": {
                                                        "type": "boolean"
                                                    },
                                                    "api": {
                                                        "type": "boolean"
                                                    },
                                                    "historyView": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            "experience": {
                                                "type": "array",
                                                "items": {
                                                    "enum": [
                                                        "csm-request-view",
                                                        "issue-view",
                                                        "portal-view"
                                                    ],
                                                    "type": "string"
                                                }
                                            }
                                        }
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "number",
                                            "string",
                                            "user",
                                            "group",
                                            "date",
                                            "datetime"
                                        ]
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "migratedFromConnect": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "connectFieldProperty": {
                                        "type": "object",
                                        "properties": {
                                            "key": {
                                                "type": "string"
                                            },
                                            "path": {
                                                "type": "string"
                                            },
                                            "connectFieldType": {
                                                "enum": [
                                                    "MULTI_SELECT",
                                                    "RICH_TEXT",
                                                    "SINGLE_SELECT",
                                                    "TEXT"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            },
                                            "formatter": {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    },
                                                    "export": {
                                                        "type": "boolean"
                                                    },
                                                    "api": {
                                                        "type": "boolean"
                                                    },
                                                    "historyView": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            "experience": {
                                                "type": "array",
                                                "items": {
                                                    "enum": [
                                                        "csm-request-view",
                                                        "issue-view",
                                                        "portal-view"
                                                    ],
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "required": [
                                            "formatter"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "const": "object"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "migratedFromConnect": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "connectFieldProperty": {
                                        "type": "object",
                                        "properties": {
                                            "key": {
                                                "type": "string"
                                            },
                                            "path": {
                                                "type": "string"
                                            },
                                            "connectFieldType": {
                                                "enum": [
                                                    "MULTI_SELECT",
                                                    "RICH_TEXT",
                                                    "SINGLE_SELECT",
                                                    "TEXT"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "view",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            },
                                            "api": {
                                                "type": "boolean"
                                            },
                                            "historyView": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "const": "object"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "migratedFromConnect": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "connectFieldProperty": {
                                        "type": "object",
                                        "properties": {
                                            "key": {
                                                "type": "string"
                                            },
                                            "path": {
                                                "type": "string"
                                            },
                                            "connectFieldType": {
                                                "enum": [
                                                    "MULTI_SELECT",
                                                    "RICH_TEXT",
                                                    "SINGLE_SELECT",
                                                    "TEXT"
                                                ],
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "formatter",
                                    "name",
                                    "type",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:customFieldType": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            },
                                            "formatter": {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    },
                                                    "export": {
                                                        "type": "boolean"
                                                    },
                                                    "api": {
                                                        "type": "boolean"
                                                    },
                                                    "historyView": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            "experience": {
                                                "type": "array",
                                                "items": {
                                                    "enum": [
                                                        "csm-request-view",
                                                        "issue-view",
                                                        "portal-view"
                                                    ],
                                                    "type": "string"
                                                }
                                            }
                                        }
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "number",
                                            "string",
                                            "user",
                                            "group",
                                            "date",
                                            "datetime"
                                        ]
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "contextConfig": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "blank",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "layout": {
                                                                "enum": [
                                                                    "basic",
                                                                    "blank",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        }
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            },
                                            "formatter": {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    },
                                                    "export": {
                                                        "type": "boolean"
                                                    },
                                                    "api": {
                                                        "type": "boolean"
                                                    },
                                                    "historyView": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            "experience": {
                                                "type": "array",
                                                "items": {
                                                    "enum": [
                                                        "csm-request-view",
                                                        "issue-view",
                                                        "portal-view"
                                                    ],
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "required": [
                                            "formatter"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "const": "object"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "contextConfig": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "blank",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "layout": {
                                                                "enum": [
                                                                    "basic",
                                                                    "blank",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        }
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "view",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            },
                                            "api": {
                                                "type": "boolean"
                                            },
                                            "historyView": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 100
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "type": {
                                        "type": "string",
                                        "const": "object"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "i18n"
                                                        ]
                                                    },
                                                    {
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "errorMessage__i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "isInline": {
                                                                "type": "boolean"
                                                            }
                                                        }
                                                    }
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "validation": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            },
                                                            "errorMessage": {
                                                                "anyOf": [
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    },
                                                                    {
                                                                        "type": "string"
                                                                    }
                                                                ]
                                                            },
                                                            "errorMessage__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "parser": {
                                                        "type": "object",
                                                        "properties": {
                                                            "expression": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "expression"
                                                        ]
                                                    },
                                                    "experience": {
                                                        "type": "array",
                                                        "items": {
                                                            "enum": [
                                                                "csm-contact-form",
                                                                "issue-bulk-edit",
                                                                "issue-create",
                                                                "issue-view",
                                                                "list-view",
                                                                "portal-request"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "isInline": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "searchSuggestions": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "expression": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "expression"
                                                ]
                                            }
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "contextConfig": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 47,
                                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                    },
                                                    "resolvedResourceEntry": {
                                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 64,
                                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "blank",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "renderRuntimeType": {
                                                        "default": "iframe",
                                                        "enum": [
                                                            "iframe",
                                                            "webworker"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "resource": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 47,
                                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                                            },
                                                            "resolvedResourceEntry": {
                                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 64,
                                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                                            },
                                                            "render": {
                                                                "default": "default",
                                                                "enum": [
                                                                    "default",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            },
                                                            "renderRuntimeType": {
                                                                "default": "iframe",
                                                                "enum": [
                                                                    "iframe",
                                                                    "webworker"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "resource"
                                                        ]
                                                    },
                                                    {
                                                        "type": "object",
                                                        "properties": {
                                                            "layout": {
                                                                "enum": [
                                                                    "basic",
                                                                    "blank",
                                                                    "native"
                                                                ],
                                                                "type": "string"
                                                            }
                                                        }
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "isUIModificationsEnabled": {
                                        "default": false,
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "formatter",
                                    "name",
                                    "type",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "width": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "height": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "width"
                                                ]
                                            },
                                            {
                                                "enum": [
                                                    "large",
                                                    "max",
                                                    "medium",
                                                    "resizable",
                                                    "small",
                                                    "xlarge"
                                                ],
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:uiModifications": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueGlance": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "label": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "label__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string",
                                                "enum": [
                                                    "badge",
                                                    "lozenge",
                                                    "icon"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "label": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "url": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "default",
                                                            "inprogress",
                                                            "moved",
                                                            "new",
                                                            "removed",
                                                            "success"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "label"
                                                ]
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "value"
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "label",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "label": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "label__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string",
                                                "enum": [
                                                    "badge",
                                                    "lozenge",
                                                    "icon"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "label": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "url": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "default",
                                                            "inprogress",
                                                            "moved",
                                                            "new",
                                                            "removed",
                                                            "success"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "label"
                                                ]
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "value"
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "label",
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issuePanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "allowMultiple": {
                                        "type": "boolean"
                                    },
                                    "config": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "icon",
                                    "title",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "allowMultiple": {
                                        "type": "boolean"
                                    },
                                    "config": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "icon",
                                    "resource",
                                    "title",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueActivity": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:dashboardGadget": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "edit": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "text": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "href": {
                                                        "minLength": 1,
                                                        "maxLength": 1000,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "href",
                                                    "text"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "thumbnail": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "refreshable": {
                                        "type": "boolean"
                                    },
                                    "connectKeys": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "function",
                                    "thumbnail",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "edit": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "text": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "href": {
                                                        "minLength": 1,
                                                        "maxLength": 1000,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "href",
                                                    "text"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "thumbnail": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "refreshable": {
                                        "type": "boolean"
                                    },
                                    "connectKeys": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "resource",
                                    "thumbnail",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:adminPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "useAsConfig": {
                                        "type": "boolean"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "blank",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "useAsConfig": {
                                        "type": "boolean"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:projectPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "blank",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:fullPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "routePrefix",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "render",
                                    "routePrefix",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:globalPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "blank",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:projectSettingsPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "layout": {
                                        "enum": [
                                            "basic",
                                            "blank",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "route": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                }
                                            },
                                            "required": [
                                                "route",
                                                "title"
                                            ]
                                        }
                                    },
                                    "sections": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "header": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 255
                                                        },
                                                        {
                                                            "additionalProperties": false,
                                                            "type": "object",
                                                            "properties": {
                                                                "i18n": {
                                                                    "type": "string",
                                                                    "minLength": 1,
                                                                    "maxLength": 300,
                                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                }
                                                            },
                                                            "required": [
                                                                "i18n"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "header__i18n": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 300,
                                                    "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "anyOf": [
                                                                    {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 255
                                                                    },
                                                                    {
                                                                        "additionalProperties": false,
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "i18n": {
                                                                                "type": "string",
                                                                                "minLength": 1,
                                                                                "maxLength": 300,
                                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "i18n"
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "title__i18n": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 300,
                                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                            },
                                                            "route": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "icon": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            }
                                                        },
                                                        "required": [
                                                            "route",
                                                            "title"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "pages"
                                            ]
                                        }
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:workflowCondition": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "name__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "description": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "description__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "expression": {
                                "type": "string"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "view": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "edit": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "create": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "projectTypes": {
                                "default": [
                                    "company-managed"
                                ],
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "team-managed",
                                        "company-managed"
                                    ]
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "expression",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:dashboardBackgroundScript": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:globalPermission": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "name__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "description": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "description__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "anonymousAllowed": {
                                "type": "boolean"
                            },
                            "defaultGrants": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "none",
                                        "all",
                                        "jira-administrators"
                                    ]
                                }
                            },
                            "migratedFromConnect": {
                                "default": false,
                                "type": "boolean"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "anonymousAllowed",
                            "description",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:projectPermission": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "name__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "description": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "description__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "category": {
                                "default": "other",
                                "enum": [
                                    "attachments",
                                    "comments",
                                    "issues",
                                    "other",
                                    "projects",
                                    "time_tracking",
                                    "voters_and_watchers"
                                ],
                                "type": "string"
                            },
                            "migratedFromConnect": {
                                "default": false,
                                "type": "boolean"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:workflowPostFunction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "edit": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "create": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "projectTypes": {
                                        "default": [
                                            "company-managed"
                                        ],
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "team-managed",
                                                "company-managed"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "function",
                                    "name",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "view": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "edit": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "create": {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    },
                                    "projectTypes": {
                                        "default": [
                                            "company-managed"
                                        ],
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "team-managed",
                                                "company-managed"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "endpoint",
                                    "name",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueContext": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "label": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "label__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string",
                                                "enum": [
                                                    "badge",
                                                    "lozenge",
                                                    "icon"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "label": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "url": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "default",
                                                            "inprogress",
                                                            "moved",
                                                            "new",
                                                            "removed",
                                                            "success"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "label"
                                                ]
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "value"
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "function",
                                    "label",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "label": {
                                        "anyOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            }
                                        ]
                                    },
                                    "label__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string",
                                                "enum": [
                                                    "badge",
                                                    "lozenge",
                                                    "icon"
                                                ]
                                            },
                                            "value": {
                                                "type": "object",
                                                "properties": {
                                                    "label": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "url": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "default",
                                                            "inprogress",
                                                            "moved",
                                                            "new",
                                                            "removed",
                                                            "success"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "label"
                                                ]
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "value"
                                        ]
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "label",
                                    "resource",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueViewBackgroundScript": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "shouldReloadOnRefresh": {
                                "type": "boolean"
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:jqlFunction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "arguments": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "required": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "name",
                                                "required"
                                            ]
                                        }
                                    },
                                    "types": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "issue",
                                                "project",
                                                "project_category",
                                                "project_type",
                                                "hierarchy_level",
                                                "version",
                                                "component",
                                                "user",
                                                "group",
                                                "team",
                                                "project_role",
                                                "priority",
                                                "resolution",
                                                "issue_type",
                                                "status",
                                                "status_category",
                                                "cascading_option",
                                                "option",
                                                "saved_filter",
                                                "issue_security_level",
                                                "issue_restriction",
                                                "label",
                                                "attachment",
                                                "issue_list",
                                                "issue_link_type",
                                                "date",
                                                "text",
                                                "number",
                                                "duration",
                                                "url"
                                            ]
                                        }
                                    },
                                    "operators": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "=",
                                                "!=",
                                                ">",
                                                ">=",
                                                "<",
                                                "<=",
                                                "in",
                                                "not in",
                                                "~",
                                                "!~",
                                                "is",
                                                "is not"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "arguments",
                                    "function",
                                    "name",
                                    "operators",
                                    "types",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "arguments": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "required": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "name",
                                                "required"
                                            ]
                                        }
                                    },
                                    "types": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "issue",
                                                "project",
                                                "project_category",
                                                "project_type",
                                                "hierarchy_level",
                                                "version",
                                                "component",
                                                "user",
                                                "group",
                                                "team",
                                                "project_role",
                                                "priority",
                                                "resolution",
                                                "issue_type",
                                                "status",
                                                "status_category",
                                                "cascading_option",
                                                "option",
                                                "saved_filter",
                                                "issue_security_level",
                                                "issue_restriction",
                                                "label",
                                                "attachment",
                                                "issue_list",
                                                "issue_link_type",
                                                "date",
                                                "text",
                                                "number",
                                                "duration",
                                                "url"
                                            ]
                                        }
                                    },
                                    "operators": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "=",
                                                "!=",
                                                ">",
                                                ">=",
                                                "<",
                                                "<=",
                                                "in",
                                                "not in",
                                                "~",
                                                "!~",
                                                "is",
                                                "is not"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "arguments",
                                    "endpoint",
                                    "name",
                                    "operators",
                                    "types",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:timeTrackingProvider": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "name": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "adminPage": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:issueNavigatorAction": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "tooltip": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "tooltip__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "actionType": {
                                "minLength": 1,
                                "maxLength": 255,
                                "enum": [
                                    "dynamic",
                                    "modal"
                                ],
                                "type": "string"
                            },
                            "viewportSize": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "width": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            },
                                            "height": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "width"
                                        ]
                                    },
                                    {
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "resizable",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    }
                                ]
                            },
                            "actions": {
                                "type": "array",
                                "items": {
                                    "additionalProperties": false,
                                    "type": "object",
                                    "properties": {
                                        "key": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 23,
                                            "pattern": "^[a-zA-Z0-9_\\-]+$"
                                        },
                                        "actionType": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "enum": [
                                                "dynamic",
                                                "modal"
                                            ],
                                            "type": "string"
                                        },
                                        "viewportSize": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "width": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        },
                                                        "height": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "width"
                                                    ]
                                                },
                                                {
                                                    "enum": [
                                                        "large",
                                                        "max",
                                                        "medium",
                                                        "resizable",
                                                        "small",
                                                        "xlarge"
                                                    ],
                                                    "type": "string"
                                                }
                                            ]
                                        },
                                        "title": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "title__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "tooltip": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "tooltip__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        }
                                    },
                                    "required": [
                                        "key",
                                        "title"
                                    ]
                                }
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:personalSettingsPage": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "layout": {
                                "enum": [
                                    "basic",
                                    "blank",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "pages": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "title": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "title__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "route": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "type": "string"
                                        },
                                        "icon": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 255
                                        }
                                    },
                                    "required": [
                                        "route",
                                        "title"
                                    ]
                                }
                            },
                            "sections": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "header": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "header__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "pages": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "title": {
                                                        "anyOf": [
                                                            {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            {
                                                                "additionalProperties": false,
                                                                "type": "object",
                                                                "properties": {
                                                                    "i18n": {
                                                                        "type": "string",
                                                                        "minLength": 1,
                                                                        "maxLength": 300,
                                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "i18n"
                                                                ]
                                                            }
                                                        ]
                                                    },
                                                    "title__i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    },
                                                    "route": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "icon": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "route",
                                                    "title"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "pages"
                                    ]
                                }
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:backlogAction": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "tooltip": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "tooltip__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "actionType": {
                                "minLength": 1,
                                "maxLength": 255,
                                "enum": [
                                    "dynamic",
                                    "modal"
                                ],
                                "type": "string"
                            },
                            "viewportSize": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "width": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            },
                                            "height": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "width"
                                        ]
                                    },
                                    {
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "resizable",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    }
                                ]
                            },
                            "actions": {
                                "type": "array",
                                "items": {
                                    "additionalProperties": false,
                                    "type": "object",
                                    "properties": {
                                        "key": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 23,
                                            "pattern": "^[a-zA-Z0-9_\\-]+$"
                                        },
                                        "actionType": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "enum": [
                                                "dynamic",
                                                "modal"
                                            ],
                                            "type": "string"
                                        },
                                        "viewportSize": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "width": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        },
                                                        "height": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "width"
                                                    ]
                                                },
                                                {
                                                    "enum": [
                                                        "large",
                                                        "max",
                                                        "medium",
                                                        "resizable",
                                                        "small",
                                                        "xlarge"
                                                    ],
                                                    "type": "string"
                                                }
                                            ]
                                        },
                                        "title": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "title__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "tooltip": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "tooltip__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        }
                                    },
                                    "required": [
                                        "key",
                                        "title"
                                    ]
                                }
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:command": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "icon": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "shortcut": {
                                "type": "string"
                            },
                            "keywords": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "target": {
                                "anyOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "page": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "page"
                                        ]
                                    },
                                    {
                                        "type": "object",
                                        "properties": {
                                            "resource": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 47,
                                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                            },
                                            "resolvedResourceEntry": {
                                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 64,
                                                "pattern": "^[a-zA-Z0-9._-]+$"
                                            },
                                            "viewportSize": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "type": "object",
                                                        "properties": {
                                                            "width": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            },
                                                            "height": {
                                                                "minLength": 1,
                                                                "maxLength": 255,
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "width"
                                                        ]
                                                    },
                                                    {
                                                        "enum": [
                                                            "large",
                                                            "max",
                                                            "medium",
                                                            "resizable",
                                                            "small",
                                                            "xlarge"
                                                        ],
                                                        "type": "string"
                                                    }
                                                ]
                                            },
                                            "render": {
                                                "default": "default",
                                                "enum": [
                                                    "default",
                                                    "native"
                                                ],
                                                "type": "string"
                                            },
                                            "renderRuntimeType": {
                                                "default": "iframe",
                                                "enum": [
                                                    "iframe",
                                                    "webworker"
                                                ],
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "resource"
                                        ]
                                    }
                                ]
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "target",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:boardAction": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "tooltip": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "tooltip__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "actionType": {
                                "minLength": 1,
                                "maxLength": 255,
                                "enum": [
                                    "dynamic",
                                    "modal"
                                ],
                                "type": "string"
                            },
                            "viewportSize": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "width": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            },
                                            "height": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "width"
                                        ]
                                    },
                                    {
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "resizable",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    }
                                ]
                            },
                            "actions": {
                                "type": "array",
                                "items": {
                                    "additionalProperties": false,
                                    "type": "object",
                                    "properties": {
                                        "key": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 23,
                                            "pattern": "^[a-zA-Z0-9_\\-]+$"
                                        },
                                        "actionType": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "enum": [
                                                "dynamic",
                                                "modal"
                                            ],
                                            "type": "string"
                                        },
                                        "viewportSize": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "width": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        },
                                                        "height": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "width"
                                                    ]
                                                },
                                                {
                                                    "enum": [
                                                        "large",
                                                        "max",
                                                        "medium",
                                                        "resizable",
                                                        "small",
                                                        "xlarge"
                                                    ],
                                                    "type": "string"
                                                }
                                            ]
                                        },
                                        "title": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "title__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "tooltip": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "tooltip__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        }
                                    },
                                    "required": [
                                        "key",
                                        "title"
                                    ]
                                }
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:sprintAction": {
                    "type": "array",
                    "items": {
                        "additionalProperties": false,
                        "type": "object",
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "title": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "tooltip": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    }
                                ]
                            },
                            "tooltip__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "actionType": {
                                "minLength": 1,
                                "maxLength": 255,
                                "enum": [
                                    "dynamic",
                                    "modal"
                                ],
                                "type": "string"
                            },
                            "viewportSize": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "width": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            },
                                            "height": {
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "width"
                                        ]
                                    },
                                    {
                                        "enum": [
                                            "large",
                                            "max",
                                            "medium",
                                            "resizable",
                                            "small",
                                            "xlarge"
                                        ],
                                        "type": "string"
                                    }
                                ]
                            },
                            "actions": {
                                "type": "array",
                                "items": {
                                    "additionalProperties": false,
                                    "type": "object",
                                    "properties": {
                                        "key": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 23,
                                            "pattern": "^[a-zA-Z0-9_\\-]+$"
                                        },
                                        "actionType": {
                                            "minLength": 1,
                                            "maxLength": 255,
                                            "enum": [
                                                "dynamic",
                                                "modal"
                                            ],
                                            "type": "string"
                                        },
                                        "viewportSize": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "width": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        },
                                                        "height": {
                                                            "minLength": 1,
                                                            "maxLength": 255,
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "width"
                                                    ]
                                                },
                                                {
                                                    "enum": [
                                                        "large",
                                                        "max",
                                                        "medium",
                                                        "resizable",
                                                        "small",
                                                        "xlarge"
                                                    ],
                                                    "type": "string"
                                                }
                                            ]
                                        },
                                        "title": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "title__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        },
                                        "tooltip": {
                                            "anyOf": [
                                                {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "type": "object",
                                                    "properties": {
                                                        "i18n": {
                                                            "type": "string",
                                                            "minLength": 1,
                                                            "maxLength": 300,
                                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                        }
                                                    },
                                                    "required": [
                                                        "i18n"
                                                    ]
                                                }
                                            ]
                                        },
                                        "tooltip__i18n": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 300,
                                            "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                        }
                                    },
                                    "required": [
                                        "key",
                                        "title"
                                    ]
                                }
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "title",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:actionValidator": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "action": {
                                "type": "string",
                                "enum": [
                                    "workItemTypeChanged",
                                    "workItemMoved",
                                    "workItemCloned",
                                    "workItemDeleted",
                                    "subtaskCreated",
                                    "workItemEdited",
                                    "workItemAssigned"
                                ]
                            },
                            "expression": {
                                "type": "string"
                            },
                            "errorMessage": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    },
                                    {
                                        "type": "string"
                                    }
                                ]
                            },
                            "errorMessage__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "action",
                            "expression",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:globalBackgroundScript": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "target": {
                                "type": "object",
                                "properties": {
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "renderRuntimeType": {
                                        "default": "iframe",
                                        "enum": [
                                            "iframe",
                                            "webworker"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "experience": {
                                "type": "array",
                                "items": {
                                    "enum": [
                                        "all",
                                        "board",
                                        "dashboard",
                                        "issue-view"
                                    ],
                                    "type": "string"
                                }
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "description": "Internal-only resolved entry filename derived from `resource` (`<resource>/<entry>`) and injected by XLS.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "default": "default",
                                "enum": [
                                    "default",
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "default": "iframe",
                                "enum": [
                                    "iframe",
                                    "webworker"
                                ],
                                "type": "string"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "experience",
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "compass:adminPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "compass:componentPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "fullscreen": {
                                        "type": "boolean"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "$ref": "#/definitions/DisplayConditions"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "fullscreen": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "displayConditions": {
                                        "$ref": "#/definitions/DisplayConditions"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "compass:globalPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "fullscreen": {
                                        "type": "boolean"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "fullscreen": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "compass:teamPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "compass:dataProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "domains": {
                                "type": "array",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "type": "string"
                                }
                            },
                            "linkTypes": {
                                "type": "array",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "enum": [
                                        "chat-channel",
                                        "document",
                                        "repository",
                                        "dashboard",
                                        "on-call",
                                        "project",
                                        "other-link"
                                    ],
                                    "type": "string"
                                },
                                "title": "linkTypes"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "callback": {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "function"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "domains",
                            "linkTypes",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:queuePage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic",
                                            "blank"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestDetail": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestDetailPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:organizationPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalFooter": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalHeader": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalSubheader": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "help_center",
                                                "portal",
                                                "create_request",
                                                "view_request",
                                                "my_requests",
                                                "approvals",
                                                "profile"
                                            ]
                                        }
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalProfilePanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalUserMenuAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "enum": [
                                                    "small",
                                                    "medium",
                                                    "large",
                                                    "xlarge",
                                                    "resizable"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "width": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    },
                                                    "height": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "width"
                                                ]
                                            }
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestViewAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "enum": [
                                                    "small",
                                                    "medium",
                                                    "large",
                                                    "xlarge",
                                                    "resizable"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "width": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    },
                                                    "height": {
                                                        "type": "string",
                                                        "description": "CSS dimension value with unit, e.g. '800px', '50vw', '100%'",
                                                        "minLength": 1,
                                                        "maxLength": 255
                                                    }
                                                },
                                                "required": [
                                                    "width"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestCreatePropertyPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:assetsImportType": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "icon",
                                    "function",
                                    "startImport",
                                    "stopImport",
                                    "importStatus",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "onDeleteImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "startImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "stopImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "importStatus": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "icon",
                                    "resource",
                                    "render",
                                    "startImport",
                                    "stopImport",
                                    "importStatus",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "onDeleteImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "startImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "stopImport": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "importStatus": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "customerServiceManagement:queuePage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic",
                                            "blank"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "customerServiceManagement:crmImport": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic",
                                            "blank"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "customerServiceManagement:requestDetail": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "layout": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "native",
                                            "basic"
                                        ]
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "displayConditions": {
                                        "type": "object"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoPullRequestCard": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoPullRequestAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoPullRequestOverviewPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoCodeFileViewer": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "filePattern": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "filePattern": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoCodeOverviewCard": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoCodeOverviewAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoCodeOverviewPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoMainMenuPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoSettingsMenuPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:workspaceSettingsMenuPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "useAsConfig": {
                                        "type": "boolean"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "useAsConfig": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:projectSettingsMenuPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:workspaceGlobalPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "useAsGetStarted": {
                                        "type": "boolean"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:workspacePersonalSettingsPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "oneOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:mergeCheck": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    },
                                    "name": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "triggers": {
                                        "type": "array",
                                        "minItems": 1,
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "on-merge",
                                                "on-code-pushed",
                                                "on-reviewer-status-changed"
                                            ]
                                        }
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "name",
                                    "triggers",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    },
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "triggers": {
                                        "type": "array",
                                        "minItems": 1,
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "on-merge",
                                                "on-code-pushed",
                                                "on-reviewer-status-changed"
                                            ]
                                        }
                                    },
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "name",
                                    "triggers",
                                    "endpoint",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:dynamicPipelinesProvider": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "name__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "description": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "description__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "name",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "icon": {
                                        "type": "string"
                                    },
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "name",
                                    "endpoint",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "connect-jira:keyboardShortcuts": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "shortcut": {
                                "pattern": "[a-z]{1,3}",
                                "maxLength": 3,
                                "type": "string",
                                "fieldDescription": "\n\nThe shortcut sequence. The current limitations are\n\n <ul>\n     <li>the sequence cannot shadow an existing product shortcut</li>\n     <li>can only contain lowercase letters</li>\n     <li>has to be shorter than 4 characters</li>\n </ul>\n\n"
                            },
                            "context": {
                                "enum": [
                                    "global",
                                    "GLOBAL",
                                    "issue_navigation",
                                    "ISSUE_NAVIGATION",
                                    "issue_action",
                                    "ISSUE_ACTION",
                                    "agile_board",
                                    "AGILE_BOARD"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context in which the shortcut will be available. This is optional, if not given the shortcut is assumed to be global.\n Different products define different contexts.\n\n Jira supported contexts:\n <ul>\n     <li>global</li>\n     <li>issue&#95;navigation</li>\n     <li>issue&#95;action</li>\n     <li>agile&#95;board</li>\n </ul>\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "target": {
                                "properties": {
                                    "key": {
                                        "pattern": "^[a-zA-Z0-9-]+$",
                                        "maxLength": 1000,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe key of the target module, defined in the add-on descriptor.\n\n"
                                    }
                                },
                                "required": [
                                    "key"
                                ],
                                "shortClassName": "keyboardShortcutTargetBean",
                                "type": "object",
                                "title": "Keyboard Shortcut Target",
                                "description": "\n\nThe bean containing the key of the target module of the shortcut.\n\n",
                                "fieldDescription": "\n\nThe target must be the key of another module defined by the add-on.\n\n Below are the actions which will be executed by the shortcut depending on the module type of the target.\n\n <ul>\n  <li>General Page: Navigates to the general page</li>\n  <li>Dialog: Opens the dialog</li>\n  <li>Web Item: Emulates clicking on the web item, which must be present on the current page</li>\n </ul>\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "shortcut",
                            "name",
                            "target",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:adminPages": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "fullPage": {
                                "type": "boolean",
                                "fieldDescription": "\n\nAllows the add-on to explicitly request any product-added header, margins or padding be removed.\n Currently only takes affect on:\n <ul>\n     <li>Confluence Admin Pages</li>\n     <li>Confluence Configure Pages</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:webPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "layout": {
                                "$ref": "#/definitions/webPanelLayout",
                                "fieldDescription": "\n\nThe width and height of the web panel on the page.\n\n"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nInformation about the web panel that will be shown when hovering over its header\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which web panels appear. Web panels are displayed top to bottom or left to right in order\n of ascending weight. The \"lightest\" weight is displayed first, while the \"heaviest\" weights sink to the bottom.\n The weight values for most panels start from 100, and the weights for the links generally start from 10. The\n weight is incremented by 10 for each in sequence to leave room for custom panels.\n\n"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\n<p>Location in the application interface for this panel.</p>\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "supportsNative": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies whether the web panel will be shown in the native apps. As of now, this will only support the Jira\n mobile and desktop clients. The web panel is required to have <code>atl.jira.view.issue.right.context</code> or\n <code>atl.jira.view.issue.left.context</code> as the location.\n\n Web panels with the <code>atl.jira.view.issue.right.context</code> location will be shown in Jira for iOS/Mac\n version 109 or later and Jira for Android version 55 or later.\n\n Web panels with the <code>atl.jira.view.issue.left.context</code> location will be shown in  Jira for Android\n version 63 or later. It is not yet available in Jira for iOS/Mac but we will update this documentation when it is.\n \n Read about [enabling your addon for the Jira mobile and desktop clients](/cloud/jira/platform/developing-apps-for-jira-cloud-mobile/).\n\n",
                                "defaultValue": "false"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe URL of the add-on resource that provides the web panel content. This URL must be relative to the add-on's \n baseUrl and can use <a href=\"../../context-parameters/\">context parameters</a>.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:webhooks": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "filter": {
                                "maxLength": 10000,
                                "type": "string",
                                "fieldDescription": "\n\nFilter for entities that the webhook will be triggered for. Refer to the documentation on <a href=\"#Filtering\">filtering</a> for details.\n\n"
                            },
                            "excludeBody": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies if webhook will send JSON body when triggered. By default, a webhook will send a request with a JSON body.\n\n",
                                "defaultValue": "false"
                            },
                            "event": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the named event you would like to listen to (e.g., \"enabled\", \"jira:issue\\_created\", etc.)\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nList of conditions which must be true for the webhook to fire\n\n"
                            },
                            "propertyKeys": {
                                "items": {
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies entity properties which will be returned inside JSON body. If not specified no properties will be returned.\n\n Currently this is supported only in Jira webhooks, for all events that support <a href=\"/cloud/jira/platform/jira-entity-properties/\">Entity Properties</a>.\n Note that properties won't be returned for entity-deleted events, since the properties are already deleted by the time the webhook is sent.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies your add-on's POST webhook handler URL. This property must be a URL relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "event",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:postInstallPage": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:webSections": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe internationalised text to be used in the link's tooltip.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\n<p>Determines the order in which the web section appears in the menu or list.</p>\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items, while the \"heaviest\"\n weights sink to the bottom of the menu or list.</p>\n\n <p>Built-in web sections have weights that are incremented by numbers that leave room for additional sections, such\n as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears in a sensible order given\n existing items.</p>\n\n",
                                "defaultValue": "100"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the web section should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:generalPages": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:webItems": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "styleClasses": {
                                "items": {
                                    "pattern": "^[_a-zA-Z]+[_a-zA-Z0-9-]*$",
                                    "maxLength": 1000,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies custom styles for the web item target page, if desired. By default, the web item content gets\n styled in the default style of the target application.\n It must only contain alphanumeric characters, dashes, underscores\n and must only start with alpha characters or underscores.\n\n"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe internationalised text to be used in the link's tooltip.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n are 16 by 16 pixels.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the web item appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the destination of the web item. The interpretation of this field depends on the value of the\n <pre>context</pre> field.\n\n <p>\n     This field is required if the <code>target</code> of the item is not a\n     <a href=\"../dialog/\"><code>Dialog Module</code></a>.\n </p>\n\n Your add-on can receive [additional context](../../context-parameters/) from the application by\n using variable tokens in the URL attribute.\n\n"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "type": "object",
                                        "fieldDescription": "\n\n<p>An object containing options which vary based on the type of web item target you are implementing.</p>\n\n <p>Currently-allowed options are:</p>\n <ul>\n     <li><a href=\"../inline-dialog-options/\">Inline Dialog Options</a> when type is \"inlinedialog\", and</li>\n     <li><a href=\"../dialog-options/\">Dialog Options</a> when type is \"dialog\"</li>\n     <li><a href=\"../dialog-module-options/\">Dialog Module Options</a> when type is \"dialogmodule\"</li>\n </ul>\n\n",
                                        "anyOf": [
                                            {
                                                "properties": {
                                                    "offsetX": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the x-axis in pixels\n\n"
                                                    },
                                                    "offsetY": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the y-axis in pixels\n\n"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "onTop": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown above the trigger or not. If this option is true but there is insufficient room above the trigger the inline-dialog will be flipped to display below it\n\n"
                                                    },
                                                    "showDelay": {
                                                        "type": "integer",
                                                        "fieldDescription": "\n\nDetermines how long in milliseconds after a show trigger is fired (such as a trigger click) until the dialog is shown\n\n"
                                                    },
                                                    "closeOthers": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if all other dialogs on the screen are closed when this one is opened\n\n"
                                                    },
                                                    "persistent": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nThis option, ignores the 'closeOthers' option\n\n"
                                                    },
                                                    "onHover": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines whether the inline-Dialog will show on a mouseOver or mouseClick of the trigger\n\n"
                                                    },
                                                    "isRelativeToMouse": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown relative to where the mouse is at the time of the event trigger (normally a click) if set to false the dialog will show aligned to the left of the trigger with the arrow showing at the center\n\n"
                                                    }
                                                },
                                                "shortClassName": "inlineDialogOptions",
                                                "type": "object",
                                                "title": "Inline Dialog Options",
                                                "description": "\n\nOptions for an inline dialog target\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "key": {
                                                        "maxLength": 100,
                                                        "type": "string",
                                                        "fieldDescription": "\n\n<p>The key of a <a href=\"../dialog/\">Dialog</a> module declared in this Connect add-on.</p>\n\n <p>\n The dialog module will include the <a href=\"../dialog-options/\">Dialog Options</a>\n that would otherwise need to be specified directly in this options object.\n </p>\n\n"
                                                    }
                                                },
                                                "required": [
                                                    "key"
                                                ],
                                                "shortClassName": "dialogModuleOptions",
                                                "type": "object",
                                                "title": "Dialog Module Options",
                                                "description": "\n\nOptions for a web-item targeting a common <a href=\"../dialog/\">dialog module</a>.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "size": {
                                                        "enum": [
                                                            "small",
                                                            "SMALL",
                                                            "medium",
                                                            "MEDIUM",
                                                            "large",
                                                            "LARGE",
                                                            "x-large",
                                                            "X-LARGE",
                                                            "fullscreen",
                                                            "FULLSCREEN",
                                                            "maximum",
                                                            "MAXIMUM"
                                                        ],
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n     This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
                                                    },
                                                    "chrome": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
                                                        "defaultValue": "true"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "header": {
                                                        "$ref": "#/definitions/i18nProperty",
                                                        "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
                                                    },
                                                    "height": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
                                                    }
                                                },
                                                "shortClassName": "dialogOptions",
                                                "type": "object",
                                                "title": "Dialog Options",
                                                "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n     These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dialogs\": [\n          {\n            \"url\": \"/my-dialog-content\",\n            \"options\": {\n              \"size\": \"fullscreen\",\n              \"header\": {\n                \"value\": \"Example Dialog\"\n              }\n            },\n            \"key\": \"dialog-module-key\"\n          }\n        ]\n      }\n    }\n\n\n"
                                            }
                                        ]
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG",
                                            "inlinedialog",
                                            "INLINEDIALOG",
                                            "dialogmodule",
                                            "DIALOGMODULE"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nDefines how the web-item content should be loaded by the page. By default, the web-item is loaded in the same\n page. The target can be set to open the web-item url as a modal dialog or an inline dialog.\n\n",
                                        "defaultValue": "page"
                                    }
                                },
                                "shortClassName": "webItemTargetBean",
                                "type": "object",
                                "title": "Web Item Target",
                                "description": "\n\nDefines the way a <a href=\"../web-item/\">web item</a> link is opened in the browser, such as in a modal or inline dialog.\n\n <h2>Inline Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Common Dialog Module Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n\n\n <p>More details for this use-case can be found on the <a href=\"../dialog/\">Dialog Module</a> page.</p>\n\n",
                                "fieldDescription": "\n\nDefines the behaviour when the item is triggered.\n If omitted, the url behaves as a regular hyperlink.\n\n"
                            },
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context for the URL parameter. Not applicable if an absolute URL is specified. Possible values\n <ul>\n     <li><pre>addon</pre> - a URL relative to the add-on's base URL</li>\n     <li><pre>page</pre> - targets a Page module by specifying the Page's module key as the URL</li>\n     <li><pre>product</pre> - a URL relative to the product's base URL</li>\n </ul>\n\n",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the web item should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations\".\n For example, the `system.admin/globalsettings` location is in the administrative\n menu on the left side of the Administration Console.\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "properties": {
                                                "condition": {
                                                    "maxLength": 100,
                                                    "type": "string",
                                                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                                                },
                                                "invert": {
                                                    "type": "boolean",
                                                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                                                    "defaultValue": "false"
                                                },
                                                "params": {
                                                    "additionalProperties": true,
                                                    "type": "object",
                                                    "fieldTitle": "Object",
                                                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                                                }
                                            },
                                            "required": [
                                                "condition"
                                            ],
                                            "shortClassName": "singleConditionBean",
                                            "type": "object",
                                            "title": "Single Condition",
                                            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
                                        },
                                        {
                                            "properties": {
                                                "conditions": {
                                                    "items": {
                                                        "type": "object",
                                                        "anyOf": [
                                                            {
                                                                "properties": {
                                                                    "conditions": {
                                                                        "items": {
                                                                            "type": "object",
                                                                            "anyOf": [
                                                                                {
                                                                                    "$ref": "#"
                                                                                },
                                                                                {
                                                                                    "$ref": "#/definitions/singleCondition"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "type": "array",
                                                                        "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "and",
                                                                            "AND",
                                                                            "or",
                                                                            "OR"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                                    }
                                                                },
                                                                "shortClassName": "compositeConditionBean",
                                                                "type": "object",
                                                                "title": "Composite Condition",
                                                                "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                                            },
                                                            {
                                                                "$ref": "#/definitions/singleCondition"
                                                            }
                                                        ]
                                                    },
                                                    "type": "array",
                                                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                },
                                                "type": {
                                                    "enum": [
                                                        "and",
                                                        "AND",
                                                        "or",
                                                        "OR"
                                                    ],
                                                    "type": "string",
                                                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                }
                                            },
                                            "shortClassName": "compositeConditionBean",
                                            "type": "object",
                                            "title": "Composite Condition",
                                            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:configurePage": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "fullPage": {
                                "type": "boolean",
                                "fieldDescription": "\n\nAllows the add-on to explicitly request any product-added header, margins or padding be removed.\n Currently only takes affect on:\n <ul>\n     <li>Confluence Admin Pages</li>\n     <li>Confluence Configure Pages</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:dialogs": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "options": {
                                "$ref": "#/definitions/dialogOptions",
                                "fieldDescription": "\n\n<p>An object containing options for this dialog.</p>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL of the content displayed in the dialog. The URL can be absolute or relative to either the\n product URL or the add-on's base URL, depending on the _context_ attribute.\n\n Your add-on can receive <a href=\"../../context-parameters/\">additional context</a> from the application by\n using variable tokens in the URL attribute.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraEntityProperties": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "entityType": {
                                "enum": [
                                    "issue",
                                    "ISSUE",
                                    "user",
                                    "USER",
                                    "project",
                                    "PROJECT"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe type of the entity. The default value is issue.\n\n",
                                "defaultValue": "issue"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "keyConfigurations": {
                                "items": {
                                    "properties": {
                                        "propertyKey": {
                                            "type": "string",
                                            "fieldDescription": "\n\nThe key of the property from which the data is indexed.\n\n"
                                        },
                                        "extractions": {
                                            "items": {
                                                "properties": {
                                                    "objectName": {
                                                        "type": "string",
                                                        "fieldDescription": "\n\nThe objectName to the JSON data which is supposed to be indexed. The objectName will be the key of a flattened JSON object with '.' as the delimiter.\n\n For instance, for JSON <code>\"{\"label\": {\"color\": \"red\", \"text\":\"connect\"}}</code> the valid objectName\n referencing the color is label.color.\n\n It is important to note that the objectName can refer to an array type, where the 'type' field in the extraction should\n be the type of each element in the specified array.\n\n"
                                                    },
                                                    "alias": {
                                                        "type": "string",
                                                        "fieldDescription": "\n\nThe name, under which this property will be searchable with JQL.\n\n"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "number",
                                                            "NUMBER",
                                                            "text",
                                                            "TEXT",
                                                            "string",
                                                            "STRING",
                                                            "user",
                                                            "USER",
                                                            "date",
                                                            "DATE"
                                                        ],
                                                        "type": "string",
                                                        "fieldDescription": "\n\nThe type of the referenced value.\n\n The type can be one of the following values:\n\n * `number`, which is indexed as a number and allows the range ordering and searching on this field.\n * `text`, which is tokenized before indexing and allows searching for particular words.\n * `string` which is indexed as is and allows searching for the exact phase only.\n * `user`, which is indexed as a user and allows user-based searching. The expected value is an _account ID_ string (a universal Atlassian user identifier).\n * `date`, which is indexed as a date and allows date range searching and ordering. The expected date format is [YYYY]-[MM]-[DD].\n The expected date time format is [YYYY]-[MM]-[DD]T[hh]:[mm] with optional offset from UTC: +/-[hh]:[mm] or `Z` for no offset.\n For reference, please see [ISO_8601 standard](http://www.w3.org/TR/NOTE-datetime).\n\n"
                                                    }
                                                },
                                                "required": [
                                                    "objectName",
                                                    "type"
                                                ],
                                                "shortClassName": "entityPropertyIndexExtractionConfigurationBean",
                                                "type": "object",
                                                "title": "Property Index",
                                                "description": "\n\nDefines an entity property to be indexed by Jira. An entity property is a reference to a JSON object, which also defines it's type.\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"objectName\": \"attachment.size\",\n      \"type\": \"number\",\n      \"alias\": \"attachmentSize\"\n    }\n\n\n"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nThe list with references to values of JSON object which will be indexed and the types of referenced values.\n\n"
                                        }
                                    },
                                    "required": [
                                        "propertyKey",
                                        "extractions"
                                    ],
                                    "shortClassName": "entityPropertyIndexKeyConfigurationBean",
                                    "type": "object",
                                    "title": "Index Key Configuration",
                                    "description": "\n\nDefines the list of extractors which index selected JSON objects from defined property.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"extractions\": [\n        {\n          \"objectName\": \"attachment.size\",\n          \"type\": \"number\"\n        }\n      ],\n      \"propertyKey\": \"attachment\"\n    }\n\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nList of properties from which selected values are indexed.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraFeatureFlagInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "$ref": "#/definitions/featureFlagProviderActionsBean",
                                "fieldDescription": "\n\nOptional actions that can be performed by Jira users, e.g., link an existing flag, create a new flag, etc.\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraProjectPermissions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDescription of the project permission. It will be displayed under the permission's name.\n\n"
                            },
                            "category": {
                                "enum": [
                                    "projects",
                                    "PROJECTS",
                                    "issues",
                                    "ISSUES",
                                    "voters_and_watchers",
                                    "VOTERS_AND_WATCHERS",
                                    "comments",
                                    "COMMENTS",
                                    "attachments",
                                    "ATTACHMENTS",
                                    "time_tracking",
                                    "TIME_TRACKING",
                                    "other",
                                    "OTHER"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe category of the project permission. This determines in which section the permission will be displayed.\n\n",
                                "defaultValue": "other"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraProjectPages": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nSpecifies the ordering of the link in the project sidebar.\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items, while the \"heaviest\"\n weights sink to the bottom of the menu or list.</p>\n\n",
                                "defaultValue": "100"
                            },
                            "iconUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies an icon URL that will displayed alongside the link to the project page in the project sidebar.\n\n The icon resource provided in this field should be larger or equals to 16x16 pixels.<br>\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL targeted by the page. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraSearchRequestViews": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the Search Request View entry appears in the <em>Export</em> menu.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA description of your Search Request View\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe URL of the service that will render the representation for the result set. The URL is\n interpreted relative to the <em>baseUrl</em> in the descriptor.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueGlances": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nSpecifies an icon to display at the left of the glance view control.\n The icon resource provided in this field should be 24x24 pixels or larger, preferably in SVG format.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "content": {
                                "type": "object",
                                "fieldDescription": "\n\nThis content becomes the label next to the icon. It's handy for communicating a small amount of information.\n\n Read about [Issue Glance Content Label](/cloud/jira/platform/modules/issue-glance-content-label/).\n\n",
                                "anyOf": [
                                    {
                                        "properties": {
                                            "label": {
                                                "$ref": "#/definitions/i18nProperty",
                                                "fieldDescription": "\n\n"
                                            },
                                            "type": {
                                                "enum": [
                                                    "label",
                                                    "LABEL"
                                                ],
                                                "type": "string",
                                                "fieldDescription": "\n\nThe type field must be set to 'label'\n\n"
                                            }
                                        },
                                        "required": [
                                            "label",
                                            "type"
                                        ],
                                        "shortClassName": "issueGlanceContentLabelBean",
                                        "type": "object",
                                        "title": "Issue Glance Content Label",
                                        "description": "\n\nDescribes the content for the issue glance module. It specifies static text to show inside the glance, which is left-aligned next to the icon.\n\n"
                                    }
                                ]
                            },
                            "target": {
                                "type": "object",
                                "fieldDescription": "\n\nSpecifies the target action when clicking on the glance.\n\n Read about [Issue Glance Target Web Panel](/cloud/jira/platform/modules/issue-glance-target-web-panel/).\n\n",
                                "properties": {
                                    "type": {
                                        "enum": [
                                            "web_panel",
                                            "WEB_PANEL"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nThe type field must be set to 'web_panel'\n\n"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL of the app resource that provides the web panel content. This URL must be relative to the app's baseUrl.\n\n"
                                    }
                                },
                                "required": [
                                    "type",
                                    "url"
                                ],
                                "shortClassName": "issueGlanceTargetWebPanelBean",
                                "title": "Issue Glance Target Web Panel",
                                "description": "\n\nDescribes the target of the issue glance module. This supports displaying a web panel in the context area of the issue.\n\n"
                            },
                            "jiraNativeAppsEnabled": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies whether the issue glance will be shown in the Jira mobile and desktop clients.\n\n The issue glance will be shown in Jira for iOS/Mac version 109 or later and Jira for Android version 55 or later.\n\n Read about [enabling your addon for the Jira mobile and desktop clients](/cloud/jira/platform/developing-apps-for-jira-cloud-mobile/).\n\n",
                                "defaultValue": "false"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "icon",
                            "name",
                            "content",
                            "target",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueTabPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\n<p>Determines the order in which the tab panel's link appears in the menu or list.</p>\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.</p>\n\n <p>Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.</p>\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "properties": {
                                                "conditions": {
                                                    "items": {
                                                        "type": "object",
                                                        "anyOf": [
                                                            {
                                                                "$ref": "#/definitions/singleCondition"
                                                            },
                                                            {
                                                                "properties": {
                                                                    "conditions": {
                                                                        "items": {
                                                                            "type": "object",
                                                                            "anyOf": [
                                                                                {
                                                                                    "$ref": "#/definitions/singleCondition"
                                                                                },
                                                                                {
                                                                                    "$ref": "#"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "type": "array",
                                                                        "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "and",
                                                                            "AND",
                                                                            "or",
                                                                            "OR"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                                    }
                                                                },
                                                                "shortClassName": "compositeConditionBean",
                                                                "type": "object",
                                                                "title": "Composite Condition",
                                                                "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                                            }
                                                        ]
                                                    },
                                                    "type": "array",
                                                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                },
                                                "type": {
                                                    "enum": [
                                                        "and",
                                                        "AND",
                                                        "or",
                                                        "OR"
                                                    ],
                                                    "type": "string",
                                                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                }
                                            },
                                            "shortClassName": "compositeConditionBean",
                                            "type": "object",
                                            "title": "Composite Condition",
                                            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                        },
                                        {
                                            "properties": {
                                                "condition": {
                                                    "maxLength": 100,
                                                    "type": "string",
                                                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                                                },
                                                "invert": {
                                                    "type": "boolean",
                                                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                                                    "defaultValue": "false"
                                                },
                                                "params": {
                                                    "additionalProperties": true,
                                                    "type": "object",
                                                    "fieldTitle": "Object",
                                                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                                                }
                                            },
                                            "required": [
                                                "condition"
                                            ],
                                            "shortClassName": "singleConditionBean",
                                            "type": "object",
                                            "title": "Single Condition",
                                            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL targeted by the tab panel. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraBuildInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "properties": {},
                                "shortClassName": "buildProviderAllActionsBean",
                                "type": "object",
                                "description": "\n\n<p>Build actions that can be performed by Jira users.</p>\n <p>Currently there are no actions defined for build providers. Please contact us if you need any.</p>\n\n",
                                "fieldDescription": "\n\nOptional actions that can be performed by Jira users\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraWorkflowConditions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "view": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that shows the read-only configuration or summary of the workflow condition.\n\n The view URL can contain the following context parameters:\n\n - `condition.id`: The unique identifier of the condition.\n - `condition.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`.\n\n"
                            },
                            "expression": {
                                "type": "string",
                                "fieldDescription": "\n\nThe [Jira expression](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-expression-eval-post)\n used to evaluate the condition. Must return a boolean value.\n <p>\n This expression can be overridden using the configuration page.\n If you return configuration with property \"expression\", then that expression will be used\n to evaluate the condition instead of the expression defined here. For example:\n\n <pre><code>AP.require([\"jira\"], function(jira) {\n    jira.WorkflowConfiguration.onSave(function() {\n        var config = {\n            \"expression\": \"dynamically built expression\"\n        };\n        return JSON.stringify(config);\n    });\n});</code></pre>\n\n"
                            },
                            "edit": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that allows to configure the workflow condition once it exists.\n\n The edit URL can contain the following context parameters:\n\n - `condition.id`: The unique identifier of the condition.\n - `condition.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`.\n\n"
                            },
                            "evaluationContext": {
                                "enum": [
                                    "user",
                                    "USER",
                                    "app",
                                    "APP"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nEXPERIMENTAL. Controls how to run the expression during the transition.\n\n - `user`: The expression will be evaluated in the context of the user making the transition (default).\n - `app`: The expression will be evaluated in the context of the app user.\n\n If the expression needs to perform some operations which require permissions that the user making\n the transition might not have, choose `app` and make sure that your app has appropriate scopes.\n\n Note: regardless of the value selected here, the `user` variable in the expression always points to the user that performs the transition.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe description of the workflow condition. This will be presented to the user when they add a new condition to a Jira workflow.\n\n"
                            },
                            "create": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that allows to configure the workflow condition on creation.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "expression",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraProjectAdminTabPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\n<p>Determines the order in which the tab panel's link appears in the menu or list.</p>\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.</p>\n\n <p>Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.</p>\n\n"
                            },
                            "location": {
                                "type": "string",
                                "fieldDescription": "\n\nThe name of the group of tabs in the project configuration where the tab panel should appear.\n The following are accepted values.\n\n * `projectgroup1`\n * `projectgroup2`\n * `projectgroup3`\n * `projectgroup4`\n\nSee [Project Configuration Locations](https://developer.atlassian.com/jiradev/jira-architecture/web-fragments/project-configuration-locations#ProjectConfigurationLocations-AddingNewItemstoExistingWebSections) for details.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL targeted by the tab panel. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraWorkflowValidators": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "view": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that shows the read-only configuration or summary of the workflow validator.\n\n The view URL can contain the following context parameters:\n\n - `validator.id`: The unique identifier of the validator.\n - `validator.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`.\n\n"
                            },
                            "expression": {
                                "type": "string",
                                "fieldDescription": "\n\nThe [Jira expression](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-api-3-expression-eval-post)\n used to evaluate the validator. Must return a boolean or string value.\n <p>\n This expression can be overridden using the configuration page.\n If you return configuration with property \"expression\", then that expression will be used\n to evaluate the validator instead of the expression defined here. For example:\n\n <pre><code>AP.require([\"jira\"], function(jira) {\n    jira.WorkflowConfiguration.onSave(function() {\n        var config = {\n            \"expression\": \"dynamically built expression\"\n        };\n        return JSON.stringify(config);\n    });\n});</code></pre>\n\n"
                            },
                            "edit": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that allows to configure the workflow validator once it exists.\n\n The edit URL can contain the following context parameters:\n\n - `validator.id`: The unique identifier of the validator.\n - `validator.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`.\n\n"
                            },
                            "evaluationContext": {
                                "enum": [
                                    "user",
                                    "USER",
                                    "app",
                                    "APP"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nEXPERIMENTAL. Controls how the expression is run during the transition:\n\n - `user`: The expression is evaluated in the context of the user making the transition (default).\n - `app`: The expression is evaluated in the context of the app user.\n\n If the expression performs operations that require permissions but\n the user making the transition cannot be guaranteed to have those permissions,\n choose `app` and make sure that your app has the appropriate scopes.\n\n Note: regardless of the value selected here, the `user` variable in the expression always points to the user that performs the transition.\n\n"
                            },
                            "errorMessage": {
                                "type": "object",
                                "fieldDescription": "\n\nThe error message that will be shown if the validator rejects the transition by returning <code>false</code>.\n <p>\n This can be either a static [i18n property](../i18n-property/), or an object containing the \"expression\" property,\n with a Jira expression that returns the error message dynamically, based on the current transition or configuration.\n\n",
                                "anyOf": [
                                    {
                                        "properties": {
                                            "expression": {
                                                "type": "string",
                                                "fieldDescription": "\n\nThe Jira expression that will return an error message if the validator rejects a transition.\n\n"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ],
                                        "shortClassName": "validatorJiraExpressionErrorMessage",
                                        "type": "object",
                                        "title": "Jira Expression Error Message",
                                        "description": "\n\nA Jira expression that will be evaluated if the workflow validator fails.\n The string returned by the Jira expression will be displayed as the error message for the failed transition.\n\n"
                                    },
                                    {
                                        "properties": {
                                            "value": {
                                                "maxLength": 1500,
                                                "type": "string",
                                                "fieldDescription": "\n\nThe human-readable default value. This will be used if no translation exists.\n Only the following HTML tags are supported: `b`, `i`, `strong`, `em`, and `code`.\n\n"
                                            },
                                            "i18n": {
                                                "maxLength": 300,
                                                "type": "string",
                                                "fieldDescription": "\n\nThe localization key for the human-readable value.\n <a href=\"../../internationalization/\">Translations</a> for the keys are defined at the top level of the\n <a href=\"../../add-on-descriptor/\">add-on descriptor</a>.\n\n"
                                            }
                                        },
                                        "required": [
                                            "value"
                                        ],
                                        "shortClassName": "validatorI18nErrorMessage",
                                        "type": "object",
                                        "title": "i18n Property",
                                        "description": "\n\nRepresents a string that can be resolved via a localization properties file. You can use the same `i18n Property` key\n and value in multiple places if you like, but identical keys must have identical values.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"value\": \"My text\"\n    }\n\n\n"
                                    }
                                ]
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe description of the workflow validator. This will be presented to the user when they add a new validator to a Jira workflow.\n\n"
                            },
                            "create": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the app page that allows to configure the workflow validator on creation.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "expression",
                            "errorMessage",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraRemoteLinkInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "items": {
                                    "properties": {
                                        "actionId": {
                                            "type": "string",
                                            "fieldDescription": "\n\n<p>A key to identify a specific action. Used for associating a specific Remote link to an action of this ID. The actionId of an action must be unique across all actions.</p>\n\n"
                                        },
                                        "actionLabel": {
                                            "properties": {
                                                "value": {
                                                    "$ref": "#/definitions/i18nProperty",
                                                    "fieldDescription": "\n\n"
                                                }
                                            },
                                            "required": [
                                                "value"
                                            ],
                                            "shortClassName": "remoteLinkProviderActionLabelBean",
                                            "type": "object",
                                            "description": "\n\n",
                                            "fieldDescription": "\n\n<p>The actionLabel of an Action is shown visibly to the User alongside the Remote Link.</p>\n\n"
                                        },
                                        "templateUrl": {
                                            "type": "string",
                                            "fieldDescription": "\n\n<p>The templateUrl of an Action is a template where strings can be substituted into the URL for a specific Remote Link. Strings used in the templateUrl must be passed in via an attribute map when associating an action with a remote link.</p>\n\n"
                                        }
                                    },
                                    "required": [
                                        "actionId",
                                        "actionLabel",
                                        "templateUrl"
                                    ],
                                    "shortClassName": "remoteLinkProviderActionBean",
                                    "type": "object",
                                    "description": "\n\n<p>Defines the Remote Link action that can be invoked.</p>\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nOptional actions that can be performed by Jira users on the remote link\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraSecurityInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage.\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI.\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration.\n\n"
                            },
                            "actions": {
                                "properties": {
                                    "fetchWorkspaces": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "securityInfoProviderActionBean",
                                        "type": "object",
                                        "fieldDescription": "\n\nAction for fetching security workspaces by IDs.\n\n"
                                    },
                                    "fetchContainers": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "securityInfoProviderActionBean",
                                        "type": "object",
                                        "fieldDescription": "\n\nAction for fetching security containers by IDs.\n\n"
                                    },
                                    "searchContainers": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "securityInfoProviderActionBean",
                                        "type": "object",
                                        "fieldDescription": "\n\nAction for showing any partial or full matches using a search on the security container name for a given workspace.\n\n"
                                    },
                                    "onEntityAssociated": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "securityInfoProviderActionBean",
                                        "type": "object",
                                        "fieldDescription": "\n\nAction to notify the provider when one of their entities has been associated with an Atlassian entity.\n\n"
                                    },
                                    "onEntityDisassociated": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "securityInfoProviderActionBean",
                                        "type": "object",
                                        "fieldDescription": "\n\nAction to notify the provider when one of their entities has its association removed from an Atlassian entity.\n\n"
                                    }
                                },
                                "shortClassName": "securityInfoProviderActionsBean",
                                "type": "object",
                                "title": "Security Information Actions",
                                "description": "\n\n<p>Security Information actions that can be performed by Jira users. </p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraBackgroundScripts": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "location": {
                                "type": "object",
                                "fieldDescription": "\n\nSpecifies where the background script will be located inside Jira, and any location-specific configuration.\n Currently, a background script can only be located in the new issue view and on the dashboards.\n\n Read about [Issue Background Script Location](/cloud/jira/platform/modules/issue-background-script-location/).\n\n",
                                "anyOf": [
                                    {
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "issue_view",
                                                    "ISSUE_VIEW",
                                                    "dashboard",
                                                    "DASHBOARD"
                                                ],
                                                "type": "string",
                                                "fieldDescription": "\n\nThe type field must be set to 'dashboard'\n\n"
                                            }
                                        },
                                        "required": [
                                            "type"
                                        ],
                                        "shortClassName": "dashboardBackgroundScriptLocationBean",
                                        "type": "object",
                                        "title": "Dashboard Background Script Location",
                                        "description": "\n\nDescribes the location of the dashboard background script module.\n\n"
                                    },
                                    {
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "issue_view",
                                                    "ISSUE_VIEW",
                                                    "dashboard",
                                                    "DASHBOARD"
                                                ],
                                                "type": "string",
                                                "fieldDescription": "\n\nThe type field must be set to 'issue-view'\n\n"
                                            },
                                            "shouldReloadOnRefresh": {
                                                "type": "boolean",
                                                "fieldDescription": "\n\nWhether the background script iframe should reload when the issue is refreshed.\n\n"
                                            }
                                        },
                                        "required": [
                                            "type"
                                        ],
                                        "shortClassName": "issueViewBackgroundScriptLocationBean",
                                        "type": "object",
                                        "title": "Issue Background Script Location",
                                        "description": "\n\nDescribes the location of the issue background script module.\n\n"
                                    }
                                ]
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe URL of the app resource that serves the iframe containing the background script.\n As with other app iframes, the iframe must load all.js.\n This URL does not support [context parameters](/cloud/jira/platform/context-parameters/).\n This URL must be relative to the app's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "location",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraDeploymentInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "properties": {
                                    "listDeployments": {
                                        "properties": {
                                            "templateUrl": {
                                                "type": "string",
                                                "fieldDescription": "\n\n"
                                            }
                                        },
                                        "required": [
                                            "templateUrl"
                                        ],
                                        "shortClassName": "deploymentProviderActionBean",
                                        "type": "object",
                                        "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.deployments}</code>.</p>\n\n",
                                        "fieldDescription": "\n\nAction for showing all linked deployments, when there are multiple deployments linked to a Jira issue.\n\n"
                                    }
                                },
                                "shortClassName": "deploymentProviderAllActionsBean",
                                "type": "object",
                                "description": "\n\n<p>Deployment actions that can be performed by Jira users.</p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n\n",
                                "fieldDescription": "\n\nOptional actions that can be performed by Jira users, e.g., list all deployments associated with the issue.\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraReports": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human-readable description of this report module. This description is displayed on the reports list.\n\n"
                            },
                            "reportCategory": {
                                "enum": [
                                    "agile",
                                    "AGILE",
                                    "issue_analysis",
                                    "ISSUE_ANALYSIS",
                                    "forecast_management",
                                    "FORECAST_MANAGEMENT",
                                    "other",
                                    "OTHER"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe category of the report. The default category is other.\n\n",
                                "defaultValue": "other"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL targeted by the report. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "thumbnailUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL of the report thumbnail. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueContexts": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nSpecifies an icon to display at the left of the context view control.\n The icon resource provided in this field should be 24x24 pixels or larger, preferably in SVG format.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "content": {
                                "type": "object",
                                "fieldDescription": "\n\nThis content becomes the label next to the icon. It's handy for communicating a small amount of information.\n\n Read about [Issue Context Content Label](/cloud/jira/platform/modules/issue-glance-content-label/). // TODO BENTO-11598: change this path when doc is updated\n\n",
                                "anyOf": [
                                    {
                                        "properties": {
                                            "label": {
                                                "$ref": "#/definitions/i18nProperty",
                                                "fieldDescription": "\n\n"
                                            },
                                            "type": {
                                                "enum": [
                                                    "label",
                                                    "LABEL"
                                                ],
                                                "type": "string",
                                                "fieldDescription": "\n\nThe type field must be set to 'label' since we currently only support 'label' for context panel content\n\n"
                                            }
                                        },
                                        "required": [
                                            "label",
                                            "type"
                                        ],
                                        "shortClassName": "issueContextContentLabelBean",
                                        "type": "object",
                                        "title": "Issue Context Content Label",
                                        "description": "\n\nDescribes the content for the issue context module. It specifies static text to show inside the context panel, which is left-aligned next to the icon.\n\n"
                                    }
                                ]
                            },
                            "target": {
                                "type": "object",
                                "fieldDescription": "\n\nSpecifies the target action when clicking on the context.\n\n Read about [Issue Context Target Web Panel](/cloud/jira/platform/modules/issue-glance-target-web-panel/). // TODO BENTO-11598: change this path when doc is updated\n\n",
                                "anyOf": [
                                    {
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "web_panel",
                                                    "WEB_PANEL"
                                                ],
                                                "type": "string",
                                                "fieldDescription": "\n\nThe type field must be set to 'web_panel'\n\n"
                                            },
                                            "url": {
                                                "type": "string",
                                                "fieldDescription": "\n\nThe URL of the app resource that provides the web panel content. This URL must be relative to the app's baseUrl.\n\n"
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "url"
                                        ],
                                        "shortClassName": "issueContextTargetWebPanelBean",
                                        "type": "object",
                                        "title": "Issue Context Target Web Panel",
                                        "description": "\n\nDescribes the target of the issue context module. This supports displaying a web panel in the context area of the issue.\n\n"
                                    }
                                ]
                            },
                            "jiraNativeAppsEnabled": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies whether the issue context will be shown in the Jira mobile and desktop clients.\n\n The issue context will be shown in Jira for iOS/Mac version 109 or later and Jira for Android version 55 or later.\n\n Read about [enabling your addon for the Jira mobile and desktop clients](/cloud/jira/platform/developing-apps-for-jira-cloud-mobile/).\n\n",
                                "defaultValue": "false"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "icon",
                            "name",
                            "content",
                            "target",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraDashboardItems": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDescription of the dashboard item. This will be displayed for a user in the directory.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe URL of the service which will render the dashboard item. Following context parameters are supported in\n url.\n\n * `dashboard.id` unique id of the dashboard on which the item is rendered. This parameter is passed only on default view\n * `dashboardItem.id` unique id of the dashboard item which is rendered. This parameter is passed only on default view\n * `dashboardItem.key` key of the dashboard item. This parameter is passed in both: default and directory view\n * `dashboardItem.viewType` type of the view in which dashboard item is displayed. Default (for dashboard) and directory. This list may be extended\n\n"
                            },
                            "configurable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecify if the dashboard-item is configurable or not. Configurable dashboard items should render configuration\n view if there is no configuration stored for the dashboard item. [Dashboard item properties](../../jira-rest-api-scopes/) can\n be used for configuration storage.\n\n In addition, configurable dashboard items should register a javascript callback for `edit click`.\n\n     AP.require(['jira'], function (jira) {\n        jira.DashboardItem.onDashboardItemEdit(function() {\n           // render dashboard item configuration now\n        });\n     });\n\n It is a common case to give users ability to set the name of the dashboard item. This can be achieved with a following\n JS code:\n\n     AP.require(['jira'], function(jira) {\n        jira.setDashboardItemTitle(\"Setting title works\");\n     });\n\n",
                                "defaultValue": "false"
                            },
                            "refreshable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecify if the dashboard-item will control the refresh. When specified, Jira won't refresh the gadget. Refreshable dashboard items should do custom refresh logic in the provided callback.\n\n     AP.require(['jira'], function (jira) {\n        jira.DashboardItem.onDashboardItemRefreshed(function() {\n           // do custom refresh logic\n        });\n     });\n\n",
                                "defaultValue": "false"
                            },
                            "thumbnailUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURI of the dashboard item thumbnail which is displayed in the directory.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "url",
                            "thumbnailUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraWorkflowPostFunctions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "view": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the add-on page that shows the read-only configuration or summary of the workflow post\n function.\n\n The view URL can contain the following context parameters:\n\n - `postFunction.id`: The unique identifier of the post function\n - `postFunction.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`\n\n"
                            },
                            "triggered": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the add-on resource that receives the HTTP POST after a workflow transition.\n It includes the authentication headers that enable the add-on to validate the authenticity of the request.\n\n Your app must return a success status code in response to the HTTP POST request.\n If your app doesn't send a success status code the request will retry,\n as described in the [webhook retry policy](../../webhooks#retry-policy).\n\n <h3>Contents of the HTTP POST</h3>\n\n To understand the type of content that is sent to the add-on after a state transition, you can use the Connect\n inspector tool. The [Connect inspector](http://go.atlassian.com/connect-inspector) is a service that lets you\n generate a temporary Atlassian Connect add-on that you can install in your Cloud development environment to inspect\n the content of event messages.\n\n Here is an example POST body. For brevity, some fields have been removed or truncated.\n\n    {\n        \"configuration\": {\n            \"value\": \"Configuration from the post function edit page\"\n        },\n        \"issue\": {\n            \"fields\": {\n                \"assignee\": { },\n                \"attachment\": [],\n                \"comment\": { },\n                \"components\": [],\n                \"created\": \"2013-11-18T17:56:23.864+1100\",\n                \"description\": null,\n                \"duedate\": null,\n                \"environment\": null,\n                \"fixVersions\": [],\n                \"issuetype\": { },\n                \"labels\": [],\n                \"lastViewed\": \"2013-11-18T17:56:31.793+1100\",\n                \"priority\": { },\n                \"project\": {\n                    \"avatarUrls\": { },\n                    \"id\": \"10000\",\n                    \"key\": \"TEST\",\n                    \"name\": \"Test\"\n                },\n                \"reporter\": { },\n                \"resolution\": { },\n                \"resolutiondate\": \"2013-11-18T17:56:31.799+1100\",\n                \"status\": { },\n                \"summary\": \"The issue summary\",\n                \"updated\": \"2013-11-18T17:56:23.864+1100\",\n                \"versions\": [],\n                \"votes\": { },\n                \"watches\": { },\n                \"workratio\": -1\n            },\n            \"id\": \"10000\",\n            \"key\": \"TEST-1\",\n            \"self\": \"http://issues.example.com/jira/issue/10000\"\n        },\n        \"transition\": {\n            \"from_status\": \"Open\",\n            \"to_status\": \"Resolved\",\n            \"transitionId\": 5,\n            \"transitionName\": \"Resolve Issue\",\n            \"workflowId\": 10000,\n            \"workflowName\": \"classic default workflow\"\n        }\n    }\n\n"
                            },
                            "edit": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the add-on page that allows to configure the workflow post function once it exists.\n\n The edit URL can contain the following context parameters:\n\n - `postFunction.id`: The unique identifier of the post function\n - `postFunction.config`: The configuration value saved to Jira after calling `WorkflowConfiguration.onSave`\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe description of the workflow post function. This will be presented to the user when they add a new post\n function to a Jira workflow.\n\n"
                            },
                            "create": {
                                "$ref": "#/definitions/url",
                                "fieldDescription": "\n\nThe relative URL to the add-on page that allows to configure the workflow post function on creation.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "triggered",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueContents": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nSpecifies an icon to show alongside the quick-add menu item.\n The icon should be 24x24 pixels or larger, preferably in .SVG format.\n\n"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nSpecifies a tooltip for the quick-add menu item.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "target": {
                                "type": "object",
                                "fieldDescription": "\n\nSpecifies the target of this content as a result of clicking on the menu item. Currently,\n you can only display a web panel in the issue's content area.\n\n Read about [Issue Page Target Web Panel](/cloud/jira/platform/modules/issue-page-target-web-panel/).\n\n",
                                "properties": {
                                    "type": {
                                        "enum": [
                                            "web_panel",
                                            "WEB_PANEL"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nThe type field must be set to 'web_panel'\n\n"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL of the add-on resource that provides the web panel content.\n This URL must be relative to the app's baseUrl.\n\n"
                                    }
                                },
                                "required": [
                                    "type",
                                    "url"
                                ],
                                "shortClassName": "issuePageTargetWebPanelBean",
                                "title": "Issue Page Target Web Panel",
                                "description": "\n\nDescribes the target of the issue content module. Supports displaying a web panel in the content area of the issue view.\n\n"
                            },
                            "contentPresentConditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies a list of [Conditions](/cloud/jira/platform/conditions/) that, when resolved to true, will\n force the content to always be displayed for that issue. Users have the ability to collapse the content\n if they don't want to see it.\n\n"
                            },
                            "jiraNativeAppsEnabled": {
                                "type": "boolean",
                                "fieldDescription": "\n\nThis is coming soon. We will update the docs here with the minimum supported Jira iOS and Android app versions\n when it is ready.\n\n Specifies whether the issue content module will be shown in the Jira mobile and desktop clients.\n\n",
                                "defaultValue": "false"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "icon",
                            "tooltip",
                            "name",
                            "target",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraDevelopmentTool": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "capabilities": {
                                "items": {
                                    "enum": [
                                        "commit",
                                        "COMMIT",
                                        "branch",
                                        "BRANCH",
                                        "pull_request",
                                        "PULL_REQUEST"
                                    ],
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nWhat development information the tool offers\n\n"
                            },
                            "application": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe application behind this development tool\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "$ref": "#/definitions/developmentToolModuleActionsBean",
                                "fieldDescription": "\n\nOptional actions that can be performed by Jira users, e.g., create branch, etc.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nA URL to the development tool\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nThe logo for the development tool, will be displayed in an area 16 by 16 pixels\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "capabilities",
                            "application",
                            "name",
                            "url",
                            "logoUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraProjectTabPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\n<p>Determines the order in which the tab panel's link appears in the menu or list.</p>\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.</p>\n\n <p>Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.</p>\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "properties": {
                                                "conditions": {
                                                    "items": {
                                                        "type": "object",
                                                        "anyOf": [
                                                            {
                                                                "$ref": "#/definitions/singleCondition"
                                                            },
                                                            {
                                                                "properties": {
                                                                    "conditions": {
                                                                        "items": {
                                                                            "type": "object",
                                                                            "anyOf": [
                                                                                {
                                                                                    "$ref": "#/definitions/singleCondition"
                                                                                },
                                                                                {
                                                                                    "$ref": "#"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "type": "array",
                                                                        "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "and",
                                                                            "AND",
                                                                            "or",
                                                                            "OR"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                                    }
                                                                },
                                                                "shortClassName": "compositeConditionBean",
                                                                "type": "object",
                                                                "title": "Composite Condition",
                                                                "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                                            }
                                                        ]
                                                    },
                                                    "type": "array",
                                                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                },
                                                "type": {
                                                    "enum": [
                                                        "and",
                                                        "AND",
                                                        "or",
                                                        "OR"
                                                    ],
                                                    "type": "string",
                                                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                }
                                            },
                                            "shortClassName": "compositeConditionBean",
                                            "type": "object",
                                            "title": "Composite Condition",
                                            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                        },
                                        {
                                            "properties": {
                                                "condition": {
                                                    "maxLength": 100,
                                                    "type": "string",
                                                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                                                },
                                                "invert": {
                                                    "type": "boolean",
                                                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                                                    "defaultValue": "false"
                                                },
                                                "params": {
                                                    "additionalProperties": true,
                                                    "type": "object",
                                                    "fieldTitle": "Object",
                                                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                                                }
                                            },
                                            "required": [
                                                "condition"
                                            ],
                                            "shortClassName": "singleConditionBean",
                                            "type": "object",
                                            "title": "Single Condition",
                                            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL targeted by the tab panel. The URL is relative to the add-on's base URL.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraGlobalPermissions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "defaultGrants": {
                                "items": {
                                    "enum": [
                                        "none",
                                        "NONE",
                                        "jira-administrators",
                                        "JIRA-ADMINISTRATORS",
                                        "all",
                                        "ALL"
                                    ],
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies group of users that will be granted this permissions when the add-on is first installed.\n\n Allowed values:\n\n  * `NONE` - Permission will not be granted to anyone by default\n  * `ALL`  -  If `anonymousAllowed` is set to true, every user, both logged in and anonymous, will be granted the permission.\n            Otherwise, permission will be granted to every user with application role assigned.\n  * `JIRA-ADMINISTRATORS` - Every user with jira administration permission will be granted this permission.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDescription of the global permission. It will be displayed under the permission's name.\n\n"
                            },
                            "anonymousAllowed": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies if this permission can be granted to anonymous users.\n\n",
                                "defaultValue": "true"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueFields": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "template": {
                                "properties": {
                                    "type": {
                                        "enum": [
                                            "link",
                                            "LINK"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nType of the template.\n\n"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\n<p>\n     If the type is 'link' then this specifies the URL template for the link.\n     It is possible to use <a href=\"../../context-parameters/\">context parameters</a> in the template.\n </p>\n\n <p>\n     The URL may be relative or absolute. If it is the former, then the Jira context path will be prepended automatically.\n </p>\n\n <p>\n     The following context parameters are available:\n     <ul>\n         <li>option.id, option.key, option.properties</li>\n         <li>issue.id, issue.key</li>\n         <li>project.id, project.key</li>\n         <li>user.id (deprecated), user.name (deprecated), user.accountId</li>\n     </ul>\n\n"
                                    }
                                },
                                "required": [
                                    "type",
                                    "url"
                                ],
                                "shortClassName": "issueFieldTemplateBean",
                                "type": "object",
                                "title": "Issue Field Template",
                                "description": "\n\nDefines the template used to render issue field options in the UI view.\n\n",
                                "fieldDescription": "\n\nThe template used to render options. This is only valid when the `type` is `single_select` or `multi_select`.\n\n"
                            },
                            "property": {
                                "properties": {
                                    "path": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe path to the value in the JSON object.\n\n For instance, for JSON <code>\"{\"label\": {\"color\": \"red\", \"text\":\"connect\"}}</code> the valid path\n referencing the color is <code>label.color</code>.\n\n"
                                    },
                                    "type": {
                                        "enum": [
                                            "number",
                                            "NUMBER",
                                            "string",
                                            "STRING",
                                            "date",
                                            "DATE"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nThe type of the referenced value. It will affect how the value is interpreted and displayed,\n and how the field behaves in JQL.\n\n The type can be one of the following:\n\n * `number`, which is displayed as a number and allows the range ordering and searching on this field.\n * `string`, which supports a string, for example <code>\"example text\"</code>, and a list of strings, for example <code>[\"example text1\", \"example text2\"]</code>.\n             The string is displayed as is and enables a search for matching phrases. The list is displayed as comma-separated values and enables a search for matches to any phrase from the list.\n * `date`, which is displayed as a date with time and allows date-based searching.\n\n    The value is expected to be a date string in one of the following formats:\n      * [YYYY]-[MM]-[DD]\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]Z\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]+[hh]:[mm]\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]-[hh]:[mm]\n\n   See [ISO_8601 standard](http://www.w3.org/TR/NOTE-datetime) for reference.\n\n"
                                    },
                                    "key": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe key of the issue property.\n\n"
                                    }
                                },
                                "required": [
                                    "path",
                                    "type",
                                    "key"
                                ],
                                "shortClassName": "issueFieldPropertyBean",
                                "type": "object",
                                "title": "Issue Field Property",
                                "description": "\n\nDefines an issue property that will store the value for the issue field of the `read_only` type.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"path\": \"comments.count\",\n      \"key\": \"statistics\",\n      \"type\": \"number\"\n    }\n\n\n",
                                "fieldDescription": "\n\nThe property that stores the field value.\n\n Required when the `type` is `read_only`, otherwise not used.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDescription of the issue field. This will be displayed for the user under the field in the create or edit issue view.\n\n"
                            },
                            "type": {
                                "enum": [
                                    "string",
                                    "STRING",
                                    "text",
                                    "TEXT",
                                    "rich_text",
                                    "RICH_TEXT",
                                    "single_select",
                                    "SINGLE_SELECT",
                                    "multi_select",
                                    "MULTI_SELECT",
                                    "number",
                                    "NUMBER",
                                    "read_only",
                                    "READ_ONLY"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe type of the field. The following types are available:\n\n * `number` Allows to set a number.\n * `string` Allows to set a string, supports exact matches in JQL.\n * `text` Allows to set a string, supports fuzzy search in JQL (with the \"~\" operator).\n * `rich_text` Allows to set multi-line text in Jira, and supports fuzzy search in JQL. Note: If you migrate from `text` to `rich_text` for an already existing field, the data won't be migrated.\n * `single_select` Allows to select one value from a predefined set. The [Issue field options](/cloud/jira/platform/rest/v2/#api-group-Issue-field-options) REST API can be user to manage available values.\n * `multi_select` Allows to select multiple values from a predefined set. The [Issue field options](/cloud/jira/platform/rest/v2/#api-group-Issue-field-options) REST API can be used to manage available values.\n * `read_only` Displays a given issue property, not editable by users.\n\n"
                            },
                            "extractions": {
                                "items": {
                                    "properties": {
                                        "path": {
                                            "type": "string",
                                            "fieldDescription": "\n\nThe path to the JSON data which is supposed to be indexed.\n\n For instance, for JSON <code>\"{\"label\": {\"color\": \"red\", \"text\":\"connect\"}}</code> the valid path\n referencing the color is label.color.\n\n Currently, specifying of index for JSON arrays and first level JSON (such as \"true\") is not supported.\n The JSON needs to be an object with properties.\n\n"
                                        },
                                        "name": {
                                            "type": "string",
                                            "fieldDescription": "\n\nThe name, under which this property will be searchable with JQL. If not given, the <pre>path</pre> will be used.\n For a field with name Field Name, and an extraction with name ExtractionName the resulting query string will be\n \"Field Name\".ExtractionName.\n\n"
                                        },
                                        "type": {
                                            "enum": [
                                                "number",
                                                "NUMBER",
                                                "text",
                                                "TEXT",
                                                "string",
                                                "STRING",
                                                "user",
                                                "USER",
                                                "date",
                                                "DATE"
                                            ],
                                            "type": "string",
                                            "fieldDescription": "\n\nThe type of the referenced value.\n\n The type can be one of the following values:\n\n * `number`, which is indexed as a number and allows the range ordering and searching on this field.\n * `text`, which is tokenized before indexing and allows searching for particular words.\n * `string` which is indexed as is and allows searching for the exact phrase only.\n * `user`, which is indexed as a user and allows user-based searching. The expected value is an _account ID_ string (a universal Atlassian user identifier).\n * `date`, which is indexed as a date with time and allows date-based searching.\n\n    The value is expected to be a date string in one of the following formats:\n      * [YYYY]-[MM]-[DD]\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]Z\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]+[hh]:[mm]\n      * [YYYY]-[MM]-[DD]T[hh]:[mm]-[hh]:[mm]\n\n   See [ISO_8601 standard](http://www.w3.org/TR/NOTE-datetime) for reference.\n\n"
                                        }
                                    },
                                    "required": [
                                        "path",
                                        "type"
                                    ],
                                    "shortClassName": "issueFieldValueExtractionBean",
                                    "type": "object",
                                    "title": "Issue Field Option Property Index",
                                    "description": "\n\nDefines an issue field option property to be indexed by Jira. An option can contain an additional properties object.\n In this bean, you can define which properties will be extracted, so that a user will be able to search for issues which have options set that have a certain property.\n\n <p>\n     Note that `multi_select` fields may have more than one option selected. In that case, properties from all options\n     are indexed. Each Option's properties should have the same structure to be indexed properly, i.e. the types of values\n     across all options' properties should not differ. If they do, Jira will still try to act smart and do the most reasonable thing,\n     but the results are not guaranteed.\n </p>\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"path\": \"category\",\n      \"type\": \"text\",\n      \"name\": \"categoryName\"\n    }\n\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nExtractions used for JQL search. This is valid only when the `type` is `single_select` or `multi_select`.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "type",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraIssueTypes": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDescription of the issue type.\n Currently it does not support i18n\n\n"
                            },
                            "type": {
                                "enum": [
                                    "standard",
                                    "STANDARD",
                                    "subtask",
                                    "SUBTASK"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nType of issue-type standard or subtask\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "description",
                            "type",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraTimeTrackingProviders": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "adminPageKey": {
                                "type": "string",
                                "fieldDescription": "\n\nIf provided, this needs to reference an existing `adminPage` module defined by the same add-on.\n Jira will link the referenced `adminPage` module as the configuration page of this time tracking module.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:lifecycle": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "installed": {
                                "type": "string",
                                "fieldDescription": "\n\nWhen a Connect add-on is installed, a synchronous request is fired to this URL to initiate the installation\n handshake. In order to successfully complete installation, the add-on must respond with either a\n <code>200 OK</code> or <code>204 No Content</code> status.\n\n<div class=\"aui-message warning\">\n    <p class=\"title\">\n        <span class=\"aui-icon icon-warning\">Warning</span>\n        <strong>Important</strong>\n    </p>\n    Upon successful registration, the add-on must return either a <code>200 OK</code> or <code>204 No Content</code>\n    response code, otherwise the operation will fail and the installation will be marked as incomplete.\n</div>\n\n"
                            },
                            "disabled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully disabled. This is an asynchronous notification event.\n\n"
                            },
                            "dare-migration": {
                                "type": "string",
                                "fieldDescription": "\n\nUsed DaRe app migration service to trigger migrations events\n\n"
                            },
                            "uninstalled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully un-installed. This is an asynchronous notification event.\n\n"
                            },
                            "enabled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully enabled. This is an asynchronous notification event.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalHeaders": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "url": {
                                "type": "string"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "pages": {
                                "items": {
                                    "enum": [
                                        "help_center",
                                        "HELP_CENTER",
                                        "portal",
                                        "PORTAL",
                                        "create_request",
                                        "CREATE_REQUEST",
                                        "view_request",
                                        "VIEW_REQUEST",
                                        "my_requests",
                                        "MY_REQUESTS",
                                        "approvals",
                                        "APPROVALS",
                                        "profile",
                                        "PROFILE"
                                    ],
                                    "type": "string"
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalSharedPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalSubHeaders": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "url": {
                                "type": "string"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "pages": {
                                "items": {
                                    "enum": [
                                        "help_center",
                                        "HELP_CENTER",
                                        "portal",
                                        "PORTAL",
                                        "create_request",
                                        "CREATE_REQUEST",
                                        "view_request",
                                        "VIEW_REQUEST",
                                        "my_requests",
                                        "MY_REQUESTS",
                                        "approvals",
                                        "APPROVALS",
                                        "profile",
                                        "PROFILE"
                                    ],
                                    "type": "string"
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalSharedPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalFooters": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "url": {
                                "type": "string"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "pages": {
                                "items": {
                                    "enum": [
                                        "help_center",
                                        "HELP_CENTER",
                                        "portal",
                                        "PORTAL",
                                        "create_request",
                                        "CREATE_REQUEST",
                                        "view_request",
                                        "VIEW_REQUEST",
                                        "my_requests",
                                        "MY_REQUESTS",
                                        "approvals",
                                        "APPROVALS",
                                        "profile",
                                        "PROFILE"
                                    ],
                                    "type": "string"
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalSharedPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalRequestCreatePropertyPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalRequestViewDetailsPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalRequestViewPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalProfilePanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskQueues": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "group": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "sidebarNavigationItemBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskReports": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "group": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "sidebarNavigationItemBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskOrganizationPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "organizationAgentViewPanelBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskReportGroups": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "sidebarNavigationGroupBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskQueueGroups": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "sidebarNavigationGroupBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalUserMenuActions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "properties": {
                                            "size": {
                                                "enum": [
                                                    "small",
                                                    "SMALL",
                                                    "medium",
                                                    "MEDIUM",
                                                    "large",
                                                    "LARGE",
                                                    "x-large",
                                                    "X-LARGE"
                                                ],
                                                "type": "string"
                                            },
                                            "chrome": {
                                                "type": "boolean",
                                                "defaultValue": "true"
                                            },
                                            "header": {
                                                "$ref": "#/definitions/i18nProperty"
                                            }
                                        },
                                        "additionalProperties": true,
                                        "shortClassName": "simpleWebItemTargetOptions",
                                        "type": "object"
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG"
                                        ],
                                        "type": "string",
                                        "defaultValue": "page"
                                    }
                                },
                                "additionalProperties": true,
                                "shortClassName": "simpleTargetBean",
                                "type": "object"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalActionBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalProfileActions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "properties": {
                                            "size": {
                                                "enum": [
                                                    "small",
                                                    "SMALL",
                                                    "medium",
                                                    "MEDIUM",
                                                    "large",
                                                    "LARGE",
                                                    "x-large",
                                                    "X-LARGE"
                                                ],
                                                "type": "string"
                                            },
                                            "chrome": {
                                                "type": "boolean",
                                                "defaultValue": "true"
                                            },
                                            "header": {
                                                "$ref": "#/definitions/i18nProperty"
                                            }
                                        },
                                        "additionalProperties": true,
                                        "shortClassName": "simpleWebItemTargetOptions",
                                        "type": "object"
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG"
                                        ],
                                        "type": "string",
                                        "defaultValue": "page"
                                    }
                                },
                                "additionalProperties": true,
                                "shortClassName": "simpleTargetBean",
                                "type": "object"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalActionBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskPortalRequestViewActions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "properties": {
                                    "url": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false,
                                "shortClassName": "portalIconBean",
                                "type": "object"
                            },
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "properties": {
                                            "size": {
                                                "enum": [
                                                    "small",
                                                    "SMALL",
                                                    "medium",
                                                    "MEDIUM",
                                                    "large",
                                                    "LARGE",
                                                    "x-large",
                                                    "X-LARGE"
                                                ],
                                                "type": "string"
                                            },
                                            "chrome": {
                                                "type": "boolean",
                                                "defaultValue": "true"
                                            },
                                            "header": {
                                                "$ref": "#/definitions/i18nProperty"
                                            }
                                        },
                                        "additionalProperties": true,
                                        "shortClassName": "simpleWebItemTargetOptions",
                                        "type": "object"
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG"
                                        ],
                                        "type": "string",
                                        "defaultValue": "page"
                                    }
                                },
                                "additionalProperties": true,
                                "shortClassName": "simpleTargetBean",
                                "type": "object"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "portalActionWithIconBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:serviceDeskOrganizationActions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "weight": {
                                "type": "integer",
                                "defaultValue": "100"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "type": "object",
                                        "anyOf": [
                                            {
                                                "properties": {
                                                    "offsetX": {
                                                        "maxLength": 10,
                                                        "type": "string"
                                                    },
                                                    "offsetY": {
                                                        "maxLength": 10,
                                                        "type": "string"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string"
                                                    },
                                                    "onTop": {
                                                        "type": "boolean"
                                                    },
                                                    "showDelay": {
                                                        "type": "integer"
                                                    },
                                                    "closeOthers": {
                                                        "type": "boolean"
                                                    },
                                                    "persistent": {
                                                        "type": "boolean"
                                                    },
                                                    "onHover": {
                                                        "type": "boolean"
                                                    },
                                                    "isRelativeToMouse": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "shortClassName": "inlineDialogOptions",
                                                "type": "object",
                                                "title": "Inline Dialog Options"
                                            },
                                            {
                                                "properties": {
                                                    "key": {
                                                        "maxLength": 100,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "key"
                                                ],
                                                "shortClassName": "dialogModuleOptions",
                                                "type": "object",
                                                "title": "Dialog Module Options"
                                            },
                                            {
                                                "properties": {
                                                    "size": {
                                                        "enum": [
                                                            "small",
                                                            "SMALL",
                                                            "medium",
                                                            "MEDIUM",
                                                            "large",
                                                            "LARGE",
                                                            "x-large",
                                                            "X-LARGE",
                                                            "fullscreen",
                                                            "FULLSCREEN",
                                                            "maximum",
                                                            "MAXIMUM"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "chrome": {
                                                        "type": "boolean",
                                                        "defaultValue": "true"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string"
                                                    },
                                                    "header": {
                                                        "$ref": "#/definitions/i18nProperty"
                                                    },
                                                    "height": {
                                                        "maxLength": 10,
                                                        "type": "string"
                                                    }
                                                },
                                                "shortClassName": "dialogOptions",
                                                "type": "object",
                                                "title": "Dialog Options"
                                            }
                                        ]
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG",
                                            "inlinedialog",
                                            "INLINEDIALOG",
                                            "dialogmodule",
                                            "DIALOGMODULE"
                                        ],
                                        "type": "string",
                                        "defaultValue": "page"
                                    }
                                },
                                "shortClassName": "webItemTargetBean",
                                "type": "object",
                                "title": "Web Item Target"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "additionalProperties": true,
                        "shortClassName": "organizationActionBean",
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:automationActions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "webhook": {
                                "$ref": "#/definitions/webhook"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "configForm": {
                                "$ref": "#/definitions/configForm"
                            },
                            "requires": {
                                "items": {
                                    "enum": [
                                        "comment",
                                        "COMMENT",
                                        "issue",
                                        "ISSUE",
                                        "user",
                                        "USER"
                                    ],
                                    "type": "string"
                                },
                                "type": "array"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "webhook",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraDeploymentGating": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "callback": {
                                "$ref": "#/definitions/callback"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "callback",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:assetPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty"
                            },
                            "url": {
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraJqlFunctions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "types": {
                                "items": {
                                    "enum": [
                                        "issue",
                                        "ISSUE",
                                        "project",
                                        "PROJECT",
                                        "project_category",
                                        "PROJECT_CATEGORY",
                                        "project_type",
                                        "PROJECT_TYPE",
                                        "hierarchy_level",
                                        "HIERARCHY_LEVEL",
                                        "version",
                                        "VERSION",
                                        "component",
                                        "COMPONENT",
                                        "user",
                                        "USER",
                                        "group",
                                        "GROUP",
                                        "team",
                                        "TEAM",
                                        "project_role",
                                        "PROJECT_ROLE",
                                        "priority",
                                        "PRIORITY",
                                        "resolution",
                                        "RESOLUTION",
                                        "issue_type",
                                        "ISSUE_TYPE",
                                        "status",
                                        "STATUS",
                                        "status_category",
                                        "STATUS_CATEGORY",
                                        "cascading_option",
                                        "CASCADING_OPTION",
                                        "option",
                                        "OPTION",
                                        "saved_filter",
                                        "SAVED_FILTER",
                                        "issue_security_level",
                                        "ISSUE_SECURITY_LEVEL",
                                        "issue_restriction",
                                        "ISSUE_RESTRICTION",
                                        "label",
                                        "LABEL",
                                        "attachment",
                                        "ATTACHMENT",
                                        "issue_list",
                                        "ISSUE_LIST",
                                        "issue_link_type",
                                        "ISSUE_LINK_TYPE",
                                        "date",
                                        "DATE",
                                        "text",
                                        "TEXT",
                                        "number",
                                        "NUMBER",
                                        "duration",
                                        "DURATION",
                                        "url",
                                        "URL"
                                    ],
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe list of field types the function can be used with.\n\n"
                            },
                            "operators": {
                                "items": {
                                    "enum": [
                                        "eq",
                                        "EQ",
                                        "neq",
                                        "NEQ",
                                        "gt",
                                        "GT",
                                        "gte",
                                        "GTE",
                                        "lt",
                                        "LT",
                                        "lte",
                                        "LTE",
                                        "in",
                                        "IN",
                                        "not_in",
                                        "NOT_IN",
                                        "contains",
                                        "CONTAINS",
                                        "not_contains",
                                        "NOT_CONTAINS",
                                        "is",
                                        "IS",
                                        "is_not",
                                        "IS_NOT"
                                    ],
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe list of operators the function can be used with.\n\n"
                            },
                            "name": {
                                "type": "string",
                                "fieldDescription": "\n\nThe name of the function.\n\n"
                            },
                            "arguments": {
                                "items": {
                                    "properties": {
                                        "name": {
                                            "type": "string",
                                            "fieldDescription": "\n\nThe name of the argument.\n\n"
                                        },
                                        "required": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nWhether the argument is required. Only arguments at the end of the list may be optional.\n\n"
                                        }
                                    },
                                    "required": [
                                        "name",
                                        "required"
                                    ],
                                    "shortClassName": "jqlFunctionArgumentBean",
                                    "type": "object",
                                    "title": "JQL Function argument",
                                    "description": "\n\n<p>Defines the Remote Link action that can be invoked.</p>\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe list of arguments that the function accepts.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe relative URL of the endpoint in the app that will be called by Jira to compute the function result.\n <p>\n The argument sent to the endpoint has the following format:\n <code><pre>\n {\n   \"precomputationId\": \"<uuid>\"\n   \"clause\": {\n     \"field\": \"field name\",\n     \"type\": [\n       \"field type\"\n     ],\n     \"operator\": \"operator\",\n     \"function\": \"function name\",\n     \"arguments\": {\n       \"value\"\n     }\n   }\n }\n\n </pre></code>\n <p>\n The endpoint is expected to return the result in the following format:\n <code><pre>\n {\n   \"jql\": \"JQL fragment to use in place of the function clause\"\n }\n </pre></code>\n <p>\n or error message:\n <code><pre>\n {\n   \"error\": \"Error message that will be displayed on the UI\"\n }\n </pre></code>\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "types",
                            "operators",
                            "name",
                            "arguments",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:cloudAppMigration": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "migrationWebhookPath": {
                                "type": "string",
                                "fieldDescription": "\n\nRelative URL path where <a href=\"https://developer.atlassian.com/platform/app-migration/events\">App Migration Webhook events</a> will be sent to.\nThis feature is currently in EAP for Connect on Forge.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:translations": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "paths": {
                                "type": "object",
                                "fieldDescription": "\nA map of locales to URLs of JSON translation files. The URLs may be relative to the Connect base URL or absolute. See <a href=\"https://developer.atlassian.com/cloud/jira/platform/internationalization-for-connect-apps/\">Internationalization for Connect apps</a>.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraOperationsInfoProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "$ref": "#/definitions/operationsInfoProviderActionsBean",
                                "fieldDescription": "\n\nRequired actions to hydrate operations workspace data.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:jiraDevOpsComponentProvider": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "homeUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nURL to the provider's homepage\n\n"
                            },
                            "logoUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to the provider's logo, which will be displayed in the UI\n\n"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "fieldDescription": "\n\nOptional URL to documentation about the provider's Jira integration\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "actions": {
                                "$ref": "#/definitions/devOpsComponentProviderActionsBean",
                                "fieldDescription": "\n\nDevOps Component actions that can be performed by Jira users.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "homeUrl",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:keyboardShortcuts": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "shortcut": {
                                "pattern": "[a-z]{1,3}",
                                "maxLength": 3,
                                "type": "string",
                                "fieldDescription": "\n\nThe shortcut sequence. The current limitations are\n\n <ul>\n     <li>the sequence cannot shadow an existing product shortcut</li>\n     <li>can only contain lowercase letters</li>\n     <li>has to be shorter than 4 characters</li>\n </ul>\n\n"
                            },
                            "context": {
                                "enum": [
                                    "global",
                                    "GLOBAL",
                                    "issue_navigation",
                                    "ISSUE_NAVIGATION",
                                    "issue_action",
                                    "ISSUE_ACTION",
                                    "agile_board",
                                    "AGILE_BOARD"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context in which the shortcut will be available. This is optional, if not given the shortcut is assumed to be global.\n Different products define different contexts.\n\n Jira supported contexts:\n <ul>\n     <li>global</li>\n     <li>issue&#95;navigation</li>\n     <li>issue&#95;action</li>\n     <li>agile&#95;board</li>\n </ul>\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "target": {
                                "properties": {
                                    "key": {
                                        "pattern": "^[a-zA-Z0-9-]+$",
                                        "maxLength": 1000,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe key of the target module, defined in the add-on descriptor.\n\n"
                                    }
                                },
                                "required": [
                                    "key"
                                ],
                                "shortClassName": "keyboardShortcutTargetBean",
                                "type": "object",
                                "title": "Keyboard Shortcut Target",
                                "description": "\n\nThe bean containing the key of the target module of the shortcut.\n\n",
                                "fieldDescription": "\n\nThe target must be the key of another module defined by the add-on.\n\n Below are the actions which will be executed by the shortcut depending on the module type of the target.\n\n <ul>\n  <li>General Page: Navigates to the general page</li>\n  <li>Dialog: Opens the dialog</li>\n  <li>Web Item: Emulates clicking on the web item, which must be present on the current page</li>\n </ul>\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "shortcut",
                            "name",
                            "target",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:adminPages": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "fullPage": {
                                "type": "boolean",
                                "fieldDescription": "\n\nAllows the add-on to explicitly request any product-added header, margins or padding be removed.\n Currently only takes affect on:\n <ul>\n     <li>Confluence Admin Pages</li>\n     <li>Confluence Configure Pages</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:webPanels": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "layout": {
                                "$ref": "#/definitions/webPanelLayout",
                                "fieldDescription": "\n\nThe width and height of the web panel on the page.\n\n"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nInformation about the web panel that will be shown when hovering over its header\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which web panels appear. Web panels are displayed top to bottom or left to right in order\n of ascending weight. The \"lightest\" weight is displayed first, while the \"heaviest\" weights sink to the bottom.\n The weight values for most panels start from 100, and the weights for the links generally start from 10. The\n weight is incremented by 10 for each in sequence to leave room for custom panels.\n\n"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\n<p>Location in the application interface for this panel.</p>\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "supportsNative": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies whether the web panel will be shown in the native apps. As of now, this will only support the Jira\n mobile and desktop clients. The web panel is required to have <code>atl.jira.view.issue.right.context</code> or\n <code>atl.jira.view.issue.left.context</code> as the location.\n\n Web panels with the <code>atl.jira.view.issue.right.context</code> location will be shown in Jira for iOS/Mac\n version 109 or later and Jira for Android version 55 or later.\n\n Web panels with the <code>atl.jira.view.issue.left.context</code> location will be shown in  Jira for Android\n version 63 or later. It is not yet available in Jira for iOS/Mac but we will update this documentation when it is.\n \n Read about [enabling your addon for the Jira mobile and desktop clients](/cloud/jira/platform/developing-apps-for-jira-cloud-mobile/).\n\n",
                                "defaultValue": "false"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe URL of the add-on resource that provides the web panel content. This URL must be relative to the add-on's \n baseUrl and can use <a href=\"../../context-parameters/\">context parameters</a>.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:webhooks": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "filter": {
                                "maxLength": 10000,
                                "type": "string",
                                "fieldDescription": "\n\nFilter for entities that the webhook will be triggered for. Refer to the documentation on <a href=\"#Filtering\">filtering</a> for details.\n\n"
                            },
                            "excludeBody": {
                                "type": "boolean",
                                "fieldDescription": "\n\nSpecifies if webhook will send JSON body when triggered. By default, a webhook will send a request with a JSON body.\n\n",
                                "defaultValue": "false"
                            },
                            "event": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the named event you would like to listen to (e.g., \"enabled\", \"jira:issue\\_created\", etc.)\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nList of conditions which must be true for the webhook to fire\n\n"
                            },
                            "propertyKeys": {
                                "items": {
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies entity properties which will be returned inside JSON body. If not specified no properties will be returned.\n\n Currently this is supported only in Jira webhooks, for all events that support <a href=\"/cloud/jira/platform/jira-entity-properties/\">Entity Properties</a>.\n Note that properties won't be returned for entity-deleted events, since the properties are already deleted by the time the webhook is sent.\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies your add-on's POST webhook handler URL. This property must be a URL relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "event",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:postInstallPage": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:webSections": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe internationalised text to be used in the link's tooltip.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\n<p>Determines the order in which the web section appears in the menu or list.</p>\n\n <p>The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items, while the \"heaviest\"\n weights sink to the bottom of the menu or list.</p>\n\n <p>Built-in web sections have weights that are incremented by numbers that leave room for additional sections, such\n as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears in a sensible order given\n existing items.</p>\n\n",
                                "defaultValue": "100"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the web section should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:generalPages": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:webItems": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "styleClasses": {
                                "items": {
                                    "pattern": "^[_a-zA-Z]+[_a-zA-Z0-9-]*$",
                                    "maxLength": 1000,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nSpecifies custom styles for the web item target page, if desired. By default, the web item content gets\n styled in the default style of the target application.\n It must only contain alphanumeric characters, dashes, underscores\n and must only start with alpha characters or underscores.\n\n"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe internationalised text to be used in the link's tooltip.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n are 16 by 16 pixels.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the web item appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the destination of the web item. The interpretation of this field depends on the value of the\n <pre>context</pre> field.\n\n <p>\n     This field is required if the <code>target</code> of the item is not a\n     <a href=\"../dialog/\"><code>Dialog Module</code></a>.\n </p>\n\n Your add-on can receive [additional context](../../context-parameters/) from the application by\n using variable tokens in the URL attribute.\n\n"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "type": "object",
                                        "fieldDescription": "\n\n<p>An object containing options which vary based on the type of web item target you are implementing.</p>\n\n <p>Currently-allowed options are:</p>\n <ul>\n     <li><a href=\"../inline-dialog-options/\">Inline Dialog Options</a> when type is \"inlinedialog\", and</li>\n     <li><a href=\"../dialog-options/\">Dialog Options</a> when type is \"dialog\"</li>\n     <li><a href=\"../dialog-module-options/\">Dialog Module Options</a> when type is \"dialogmodule\"</li>\n </ul>\n\n",
                                        "anyOf": [
                                            {
                                                "properties": {
                                                    "offsetX": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the x-axis in pixels\n\n"
                                                    },
                                                    "offsetY": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the y-axis in pixels\n\n"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "onTop": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown above the trigger or not. If this option is true but there is insufficient room above the trigger the inline-dialog will be flipped to display below it\n\n"
                                                    },
                                                    "showDelay": {
                                                        "type": "integer",
                                                        "fieldDescription": "\n\nDetermines how long in milliseconds after a show trigger is fired (such as a trigger click) until the dialog is shown\n\n"
                                                    },
                                                    "closeOthers": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if all other dialogs on the screen are closed when this one is opened\n\n"
                                                    },
                                                    "persistent": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nThis option, ignores the 'closeOthers' option\n\n"
                                                    },
                                                    "onHover": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines whether the inline-Dialog will show on a mouseOver or mouseClick of the trigger\n\n"
                                                    },
                                                    "isRelativeToMouse": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown relative to where the mouse is at the time of the event trigger (normally a click) if set to false the dialog will show aligned to the left of the trigger with the arrow showing at the center\n\n"
                                                    }
                                                },
                                                "shortClassName": "inlineDialogOptions",
                                                "type": "object",
                                                "title": "Inline Dialog Options",
                                                "description": "\n\nOptions for an inline dialog target\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "key": {
                                                        "maxLength": 100,
                                                        "type": "string",
                                                        "fieldDescription": "\n\n<p>The key of a <a href=\"../dialog/\">Dialog</a> module declared in this Connect add-on.</p>\n\n <p>\n The dialog module will include the <a href=\"../dialog-options/\">Dialog Options</a>\n that would otherwise need to be specified directly in this options object.\n </p>\n\n"
                                                    }
                                                },
                                                "required": [
                                                    "key"
                                                ],
                                                "shortClassName": "dialogModuleOptions",
                                                "type": "object",
                                                "title": "Dialog Module Options",
                                                "description": "\n\nOptions for a web-item targeting a common <a href=\"../dialog/\">dialog module</a>.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "size": {
                                                        "enum": [
                                                            "small",
                                                            "SMALL",
                                                            "medium",
                                                            "MEDIUM",
                                                            "large",
                                                            "LARGE",
                                                            "x-large",
                                                            "X-LARGE",
                                                            "fullscreen",
                                                            "FULLSCREEN",
                                                            "maximum",
                                                            "MAXIMUM"
                                                        ],
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n     This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
                                                    },
                                                    "chrome": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
                                                        "defaultValue": "true"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "header": {
                                                        "$ref": "#/definitions/i18nProperty",
                                                        "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
                                                    },
                                                    "height": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
                                                    }
                                                },
                                                "shortClassName": "dialogOptions",
                                                "type": "object",
                                                "title": "Dialog Options",
                                                "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n     These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dialogs\": [\n          {\n            \"url\": \"/my-dialog-content\",\n            \"options\": {\n              \"size\": \"fullscreen\",\n              \"header\": {\n                \"value\": \"Example Dialog\"\n              }\n            },\n            \"key\": \"dialog-module-key\"\n          }\n        ]\n      }\n    }\n\n\n"
                                            }
                                        ]
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG",
                                            "inlinedialog",
                                            "INLINEDIALOG",
                                            "dialogmodule",
                                            "DIALOGMODULE"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nDefines how the web-item content should be loaded by the page. By default, the web-item is loaded in the same\n page. The target can be set to open the web-item url as a modal dialog or an inline dialog.\n\n",
                                        "defaultValue": "page"
                                    }
                                },
                                "shortClassName": "webItemTargetBean",
                                "type": "object",
                                "title": "Web Item Target",
                                "description": "\n\nDefines the way a <a href=\"../web-item/\">web item</a> link is opened in the browser, such as in a modal or inline dialog.\n\n <h2>Inline Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Common Dialog Module Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n\n\n <p>More details for this use-case can be found on the <a href=\"../dialog/\">Dialog Module</a> page.</p>\n\n",
                                "fieldDescription": "\n\nDefines the behaviour when the item is triggered.\n If omitted, the url behaves as a regular hyperlink.\n\n"
                            },
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context for the URL parameter. Not applicable if an absolute URL is specified. Possible values\n <ul>\n     <li><pre>addon</pre> - a URL relative to the add-on's base URL</li>\n     <li><pre>page</pre> - targets a Page module by specifying the Page's module key as the URL</li>\n     <li><pre>product</pre> - a URL relative to the product's base URL</li>\n </ul>\n\n",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the web item should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations\".\n For example, the `system.admin/globalsettings` location is in the administrative\n menu on the left side of the Administration Console.\n\n Find product locations with the Web Fragment Finder\n\n <ul>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n     <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "properties": {
                                                "condition": {
                                                    "maxLength": 100,
                                                    "type": "string",
                                                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                                                },
                                                "invert": {
                                                    "type": "boolean",
                                                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                                                    "defaultValue": "false"
                                                },
                                                "params": {
                                                    "additionalProperties": true,
                                                    "type": "object",
                                                    "fieldTitle": "Object",
                                                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                                                }
                                            },
                                            "required": [
                                                "condition"
                                            ],
                                            "shortClassName": "singleConditionBean",
                                            "type": "object",
                                            "title": "Single Condition",
                                            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
                                        },
                                        {
                                            "properties": {
                                                "conditions": {
                                                    "items": {
                                                        "type": "object",
                                                        "anyOf": [
                                                            {
                                                                "properties": {
                                                                    "conditions": {
                                                                        "items": {
                                                                            "type": "object",
                                                                            "anyOf": [
                                                                                {
                                                                                    "$ref": "#"
                                                                                },
                                                                                {
                                                                                    "$ref": "#/definitions/singleCondition"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "type": "array",
                                                                        "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "and",
                                                                            "AND",
                                                                            "or",
                                                                            "OR"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                                    }
                                                                },
                                                                "shortClassName": "compositeConditionBean",
                                                                "type": "object",
                                                                "title": "Composite Condition",
                                                                "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                                            },
                                                            {
                                                                "$ref": "#/definitions/singleCondition"
                                                            }
                                                        ]
                                                    },
                                                    "type": "array",
                                                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                },
                                                "type": {
                                                    "enum": [
                                                        "and",
                                                        "AND",
                                                        "or",
                                                        "OR"
                                                    ],
                                                    "type": "string",
                                                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                }
                                            },
                                            "shortClassName": "compositeConditionBean",
                                            "type": "object",
                                            "title": "Composite Condition",
                                            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "location",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:configurePage": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n  You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n  are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "fullPage": {
                                "type": "boolean",
                                "fieldDescription": "\n\nAllows the add-on to explicitly request any product-added header, margins or padding be removed.\n Currently only takes affect on:\n <ul>\n     <li>Confluence Admin Pages</li>\n     <li>Confluence Configure Pages</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe location in the application interface where the page's link should appear. For the Atlassian application\n interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or\n navigation list in the UI.\n\n Places in the Atlassian UI are identified by what are known as \"well-known locations.\"\n For example, the \"system.admin/globalsettings\" location is in the administrative\n menu link on the left side of the Administration Console.\n\n Find product locations with the web fragment finder:\n\n <ul>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder/cloud/overview\">Jira Locations</a></li>\n  <li><a href=\"https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder-confluence/cloud/overview\">Confluence locations</a></li>\n </ul>\n\n If the <code>location</code> property is not specified, a default location is used:\n\n Jira:\n\n <ul>\n <li><code>generalPage</code>: system.top.navigation.bar</li>\n <li><code>adminPage</code>: advanced\\_menu\\_section/advanced_section</li>\n </ul>\n\n Confluence:\n\n <ul>\n <li><code>generalPage</code>: system.help/pages</li>\n <li><code>adminPage</code>: system.admin/marketplace_confluence</li>\n </ul>\n\n You may wish to have no link to the page shown anywhere - for example, if you are using the page as the\n target of a <a href=\"../../jsapi/dialog/\">JavaScript API dialog</a>.\n In this case, set the value of <code>location</code> to \"none\".\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\nConditions can be added to display only when all the given conditions are true.\n\nThe supported conditions for pages are:\n\n<strong>Common conditions</strong>\n\n<ul>\n    <li><code>addon_property_exists</code></li>\n    <li><code>addon_property_equal_to</code></li>\n    <li><code>addon_property_equal_to_context</code></li>\n    <li><code>addon_property_contains_any</code></li>\n    <li><code>addon_property_contains_all</code></li>\n    <li><code>addon_property_contains_context</code></li>\n    <li><code>addon_property_contains_any_user_group</code></li>\n    <li><code>user_is_admin</code></li>\n    <li><code>user_is_logged_in</code></li>\n    <li><code>user_is_sysadmin</code></li>\n    <li><code>addon_is_licensed</code></li>\n    <li><code>feature_flag</code></li>\n</ul>\n\n<strong>Jira conditions</strong>\n\n<ul>\n    <li><code>entity_property_exists</code></li>\n    <li><code>entity_property_equal_to</code></li>\n    <li><code>entity_property_equal_to_context</code></li>\n    <li><code>entity_property_contains_any</code></li>\n    <li><code>entity_property_contains_all</code></li>\n    <li><code>entity_property_contains_context</code></li>\n    <li><code>entity_property_contains_any_user_group</code></li>\n    <li><code>can_use_application</code></li>\n    <li><code>project_type</code></li>\n    <li><code>has_global_permission</code></li>\n</ul>\n\n<strong>Confluence conditions</strong>\n\n<ul>\n    <li><code>content_property_exists</code></li>\n    <li><code>content_property_equal_to</code></li>\n    <li><code>content_property_equal_to_context</code></li>\n    <li><code>content_property_contains_any</code></li>\n    <li><code>content_property_contains_all</code></li>\n    <li><code>content_property_contains_context</code></li>\n    <li><code>content_property_contains_any_user_group</code></li>\n    <li><code>space_property_exists</code></li>\n    <li><code>space_property_equal_to</code></li>\n    <li><code>space_property_equal_to_context</code></li>\n    <li><code>space_property_contains_any</code></li>\n    <li><code>space_property_contains_all</code></li>\n    <li><code>space_property_contains_context</code></li>\n    <li><code>space_property_contains_any_user_group</code></li>\n</ul>\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This must be relative to the add-on's baseUrl.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:dialogs": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "options": {
                                "$ref": "#/definitions/dialogOptions",
                                "fieldDescription": "\n\n<p>An object containing options for this dialog.</p>\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the URL of the content displayed in the dialog. The URL can be absolute or relative to either the\n product URL or the add-on's base URL, depending on the _context_ attribute.\n\n Your add-on can receive <a href=\"../../context-parameters/\">additional context</a> from the application by\n using variable tokens in the URL attribute.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:blueprints": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "template": {
                                "properties": {
                                    "blueprintContext": {
                                        "properties": {
                                            "url": {
                                                "type": "string",
                                                "fieldDescription": "\n\nA URL to which a POST request will be made during the rendering of the blueprint (see <a href=\"#POSTBODYEXAMPLE\">'Example of the request POST body' below</a> for an example\n of what will be POSTed to this resource). The response is then used for blueprint variable substitution, to enable\n blueprints to create pages that have dynamic content.\n <br>\n <h3>Expected response format</h3>\n The expected response from the context URL is a JSON array of objects with certain fields:\n\n\n\n\n\n    [\n      {\n        \"identifier\": \"ContentPageTitle\",\n        \"value\": \"Unique Page Title 1\",\n        \"representation\": \"plain\"\n      },\n      {\n        \"identifier\": \"custom-key1\",\n        \"value\": \"custom value 1\",\n        \"representation\": \"plain\"\n      },\n      {\n        \"identifier\": \"custom-key2\",\n        \"value\": \"<ac:structured-macro ac:name=\\\"cheese\\\" ac:schema-version=\\\"1\\\"/> \",\n        \"representation\": \"storage\"\n      }\n    ]\n\n\n\n\n <h3 id=\"IDENTIFIERFIELD\">The <code>identifier</code> field</h3>\n The <code>identifier</code> field refers to the <code>name</code> attribute of the <code>var</code> element in a blueprint\n template. If the <code>identifier</code> is matched with a template variable, the <code>value</code> is used in the substitution.\n If a template contains a variable, but there is no matching <code>identifier</code> in the context, an error is generated.\n An identifier with no matching template variable is regarded as a no-op.\n\n The <code>identifier</code> field for each context object must be unique. It is an error to have more than one context object with\n the same identifier, and it is undefined which will get picked during substitution.\n\n\n Some <code>identifier</code> names are reserved for use with special meaning during substitution. They\n must have a <code>representation</code> field with the value <code>plain</code>. The list below describes the meaning\n of each existing reserved identifier.\n\n <ul>\n     <li>\n         <code>ContentPageTitle</code>: allows the blueprint template to set the page title. It must not contain any\n          characters that cannot be used as a Confluence page title. If this reserved <code>identifier</code> is not\n          found in the context, the page created from the blueprint will not have a title set and\n          will require the user to set it before it can be saved. The blueprint module must also specify\n          'edit' as the value of the <code>createResult</code> field in this case. Note: the capital 'C'\n          in the name is not a mistake or typo.\n     </li>\n     <li>\n         <code>labelsString</code>: A space separated list of labels. The labels will be added to the page being created\n         by this blueprint. See <a href=\"https://confluence.atlassian.com/display/doc/Add%2C+Remove+and+Search+for+Labels\">\n             the Confluence docs about labels</a> for more information.\n     </li>\n </ul>\n Using reserved identifiers as part of your template is possible, but these identifiers may change in the future, so\n best practice is to only use non-reserved identifiers in your template. See <a href=\"#BACKWARDSCOMPATIBILITY\">Backwards compatibility</a>\n for more information on <code>identifier</code>s.\n\n <h3>The <code>representation</code> field</h3>\n\n The <code>representation</code> field must be one of the following values. If unset, it will default to <code>plain</code>.\n <ul>\n     <li><code>plain</code></li>\n     <li><code>wiki</code></li>\n     <li><code>storage</code></li>\n </ul>\n\n <h3>The <code>value</code> field</h3>\n\n The <code>value</code> field must be in the same format as the <code>representation</code> field.\n If the format is incorrect (such as mismatched tags in <code>storage</code> format), an error message will be displayed\n in the resulting page. Here's an explanation of what each format means:\n\n <ul>\n     <li>\n         <code>plain</code>: Plain text, which is HTML escaped during variable substitution. Use this for simple textual substitution.\n     </li>\n     <li>\n         <code>wiki</code>: Valid <a href=\"https://confluence.atlassian.com/display/DOC/Confluence+Wiki+Markup\">\n         Confluence Wiki Markup</a>. The wiki markup will be rendered into html during substitution into the page.\n         The resulting page will not contain any wiki markup. Use this format when simple styling\n         is required (such as emphasis, underlines or and tables etc).\n     </li>\n     <li>\n         <code>storage</code>: Valid <a href=\"http://confluence.atlassian.com/display/DOC/Confluence+Storage+Format\">\n             Confluence Storage Format</a>. This value is substituted into the page directly, before the page is rendered. Use this format\n             to insert Confluence macros dynamically as part of your blueprint. See <a href=\"https://confluence.atlassian.com/display/DOC/Macros\">Macros</a>\n             for a list of available Confluence macros, including storage format examples.\n     </li>\n </ul>\n\n\n <h3 id=\"POSTBODYEXAMPLE\">Example of the request POST body</h3>\n The context url may need some information to produce a more individually suitable response. Confluence\n will send some information related to the blueprint in the body of the request during the creation process.\n Here's an example of what will be sent in the body of the POST request:\n\n\n\n\n\n    {\n      \"addonKey\": \"addon-key\",\n      \"blueprintKey\": \"blueprint-key\",\n      \"spaceKey\": \"SPACEKEY\",\n      \"userKey\": \"edd16ba6-0d41-4313-8bb9-84dc82cf6e7c\",\n      \"userLocale\": \"fr_FR\"\n    }\n\n\n\n <ul>\n     <li><code>addonKey</code>: the key of the add-on that the blueprint is part of.</li>\n     <li><code>blueprintKey</code>: the key of the blueprint that triggered this context request.</li>\n     <li><code>spaceKey</code>: the space to create the page in (this is selected by the user in the Create dialog).</li>\n     <li><code>userKey</code>: the user key of the user creating the page from blueprint.</li>\n     <li><code>userLocale</code>: the locale of the user creating the page from blueprint.</li>\n </ul>\n Note that userKey and userLocale will not be available in the POST request after GDPR deprecation period.\n\n"
                                            }
                                        },
                                        "required": [
                                            "url"
                                        ],
                                        "shortClassName": "blueprintTemplateContextBean",
                                        "type": "object",
                                        "title": "Blueprint Template Context",
                                        "description": "\n\nDefines the context of the blueprint template.\n\n\n\n\n\n    {\n      \"template\": {\n        \"url\": \"/blueprints/blueprint.xml\",\n        \"blueprintContext\": {\n          \"url\": \"/blueprints/context\"\n        }\n      }\n    }\n\n\n\n\n A blueprint template is static - the same template will produce the same Confluence page. To produce Confluence\n pages dynamically (to create a different page for a different user), the template needs to\n use variable substitution to produce the dynamic parts. Variable substitution requires the add-on to provide data\n for substitution. Collectively, this data is called the context for substitution.\n\n The context is made up of a list of objects which are retrieved from the context url specified by the blueprint\n context <code>url</code> field in this module descriptor. See <a href=\"#IDENTIFIERFIELD\">Properties</a> for the definition of each field in the context.\n\n <h3>Substituting dynamic variables in a blueprint</h3>\n\n Let's say we have a blueprint template module <code>/blueprints/blueprint.xml</code>:\n <pre><code>&lt;h2 id=&quot;static1&quot;&gt;Hello Blueprint&lt;/h2&gt;\n&lt;h2 id=&quot;custom1&quot;&gt;&lt;at:var at:name=&quot;ContentPageTitle&quot;/&gt;&lt;/h2&gt;\n&lt;h2 id=&quot;custom2&quot;&gt;&lt;at:var at:name=&quot;custom-key1&quot;/&gt;&lt;/h2&gt;\n&lt;h2 id=&quot;custom3&quot;&gt;&lt;at:var at:rawxhtml=&quot;true&quot; at:name=&quot;custom-key2&quot;/&gt;&lt;/h2&gt;\n</code></pre>\n\n And an add-on server resource <code>/blueprints/context</code> which returns this JSON response as the context:\n\n\n\n\n\n    [\n      {\n        \"identifier\": \"ContentPageTitle\",\n        \"value\": \"Unique Page Title 1\",\n        \"representation\": \"plain\"\n      },\n      {\n        \"identifier\": \"custom-key1\",\n        \"value\": \"custom value 1\",\n        \"representation\": \"plain\"\n      },\n      {\n        \"identifier\": \"custom-key2\",\n        \"value\": \"<ac:structured-macro ac:name=\\\"cheese\\\" ac:schema-version=\\\"1\\\"/> \",\n        \"representation\": \"storage\"\n      }\n    ]\n\n\n\n\n During blueprint page creation, Confluence sends a POST request to <code>/blueprints/context</code> to retrieve\n the context. The context retrieved is parsed as a JSON array of objects and used in the substitute of\n the variables in the blueprint template above (<code>custom-key1</code>, <code>custom-key2</code> are the variables).\n\n The final, variable substituted, storage format will look like this:\n <pre><code>&lt;h2&gt;Hello Blueprint&lt;/h2&gt;\n&lt;h2&gt;Unique Page Title 1&lt;/h2&gt;\n&lt;h2&gt;custom value 1&lt;/h2&gt;\n&lt;h2&gt;&lt;ac:structured-macro ac:name=&quot;cheese&quot; ac:schema-version=&quot;1&quot; /&gt;&lt;/h2&gt;\n</code></pre>\n\n This is then used as the Confluence page to be saved to the database and displayed to the user according to the\n <code>createResult</code> field of the blueprint module (see <a href=\"../blueprint-template/\">Blueprint Template Module</a>).\n\n An error message appears in the Content Create Dialog if Confluence has any problems accessing the blueprint\n template or context URL (for example if your add-on server failed to respond in 10 seconds or the JSON\n returned is invalid). A detailed error and/or stacktrace may be accessible by Atlassian support, but the end user will see an\n error like the one shown here:\n <img src=\"/cloud/connect/images/confluence-blueprint-context-error.png\" alt=\"Blueprint context error\" width=\"80%\" style=\"border:1px solid #999;margin-top:10px;\">\n\n <h3 id=\"BACKWARDSCOMPATIBILITY\">Backwards compatibility of the <code>identifier</code> field</h3>\n A blueprint template containing variables may change as the add-on evolves over time. However, because end users\n can customize blueprint templates, it's possible for the customized version of the template to differ from\n the version in the add-on. This difference won't cause an error as long as the variables used in the template are\n still being returned as part of the context url.\n\n Add-ons wanting to retain backwards compatibility for their blueprint templates should ensure that any variables\n used in a template are always returned in the context url, even if a new version of the blueprint template no\n longer uses it (for example if users are relying on an old or customized version of the template). This ensures that the template\n continues to function when the add-on updates the template.\n\n",
                                        "fieldDescription": "\n\nDefines the add-on server endpoint that provides the JSON objects used for substituting variables in the blueprint template.\n\n\n For more information on defining variables in blueprint templates, check out the examples in\n <a href=\"../blueprint-template-context/\">Blueprint Template Context</a>.\n\n"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL of the add-on resource that provides the blueprint template content. This URL has to be relative\n to the add-on base URL.\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "blueprintTemplateBean",
                                "type": "object",
                                "title": "Blueprint Template",
                                "description": "\n\nDefines where the blueprint template is located and the context for variable substitution.\n\n\n\n\n\n    {\n      \"template\": {\n        \"url\": \"/blueprints/blueprint.xml\",\n        \"blueprintContext\": {\n          \"url\": \"/blueprints/context\"\n        }\n      }\n    }\n\n\n",
                                "fieldDescription": "\n\nDefines where the blueprint template is located and the context for variable substitution.<br>\n For more about how to define variables in blueprint template and template context please follow the example in\n <a href=\"../blueprint-template-context/\">Blueprint Template Context</a>.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nDefines an icon for this Blueprint, to be shown in the Create Content dialog.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nDefines a short description for this Blueprint, to be shown in the Create Content dialog.\n\n"
                            },
                            "createResult": {
                                "enum": [
                                    "edit",
                                    "EDIT",
                                    "view",
                                    "VIEW"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nDefines the screen to go to when creating this type of Blueprint. A value of `view` causes Confluence to bypass the\n editor page and automatically create the page content. The user lands in the view of the created page. When `edit`,\n the user is sent to the editor which is pre-filled with the template content.\n\n",
                                "defaultValue": "edit"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "template",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:spaceToolsTabs": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "weight": {
                                "type": "integer",
                                "fieldDescription": "\n\nDetermines the order in which the page's link appears in the menu or list.\n\n The \"lightest\" weight (i.e., lowest number) appears first, rising relative to other items,\n while the \"heaviest\" weights sink to the bottom of the menu or list.\n\n Built-in web items have weights that are incremented by numbers that leave room for additional\n items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears\n in a sensible order given existing items.\n\n",
                                "defaultValue": "100"
                            },
                            "location": {
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\nThe sub-section where this Space Tools Tab should appear. The primary section for Space Tabs is\n `system.space.tools`, and the location specified here will be beneath that. e.g setting a location of\n \"contenttools\" will result in a final location of `system.space.tools/contenttools`.\n\nConfluence comes the following standard sections in Space Tools:\n\n * system.space.tools/overview\n * system.space.tools/permissions\n * system.space.tools/contenttools\n * system.space.tools/lookandfeel\n * system.space.tools/integrations\n * system.space.tools/addons\n\nIn future, Connect add-ons will be able to define new web sections, which will enable add-ons to define new\n sub-sections for Space Tools.\n\nLegacy Space Admin section cannot be defined, and is always system.space.admin/spaceops\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "properties": {
                                                "conditions": {
                                                    "items": {
                                                        "type": "object",
                                                        "anyOf": [
                                                            {
                                                                "$ref": "#"
                                                            },
                                                            {
                                                                "$ref": "#/definitions/singleCondition"
                                                            }
                                                        ]
                                                    },
                                                    "type": "array",
                                                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                                                },
                                                "type": {
                                                    "enum": [
                                                        "and",
                                                        "AND",
                                                        "or",
                                                        "OR"
                                                    ],
                                                    "type": "string",
                                                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                                                }
                                            },
                                            "shortClassName": "compositeConditionBean",
                                            "type": "object",
                                            "title": "Composite Condition",
                                            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
                                        },
                                        {
                                            "properties": {
                                                "condition": {
                                                    "maxLength": 100,
                                                    "type": "string",
                                                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                                                },
                                                "invert": {
                                                    "type": "boolean",
                                                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                                                    "defaultValue": "false"
                                                },
                                                "params": {
                                                    "additionalProperties": true,
                                                    "type": "object",
                                                    "fieldTitle": "Object",
                                                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                                                }
                                            },
                                            "required": [
                                                "condition"
                                            ],
                                            "shortClassName": "singleConditionBean",
                                            "type": "object",
                                            "title": "Single Condition",
                                            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe url to retrieve the content from.\n This can be absolute or relative to the add-on's baseUrl\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:confluenceContentProperties": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "keyConfigurations": {
                                "items": {
                                    "properties": {
                                        "propertyKey": {
                                            "maxLength": 100,
                                            "type": "string",
                                            "fieldDescription": "\n\nThe key of the property from which the data is indexed. Only alphanumeric characters are allowed,\n and it must be globally unique. Prefixing it with the name of your add-on is the best way to ensure this.\n\n"
                                        },
                                        "extractions": {
                                            "items": {
                                                "properties": {
                                                    "uiSupport": {
                                                        "$ref": "#/definitions/uiSupport",
                                                        "fieldDescription": "\n\n<code>uiSupport</code> can be used to define how your aliased field will be displayed in the CQL query builder.\n By defining <code>uiSupport</code>, your content property will appear in the CQL query builder for all macros and search\n features built on CQL. For example, your property will become usable in the\n <a href=\"https://confluence.atlassian.com/doc/content-by-label-macro-145566.html\">Content By Label macro</a>, and\n filterable by users on the Confluence search screen.\n\n Note: You need to define an <code>alias</code> to use <code>uiSupport</code>.\n\n"
                                                    },
                                                    "objectName": {
                                                        "maxLength": 1000,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nThe <code>objectName</code> of the JSON data which should be indexed. The objectName is the key of a flattened JSON object with '.' as the path separator.\n\n For instance, for JSON <code>\"{\"label\": {\"color\": \"red\", \"text\":\"connect\"}}</code> the valid objectName\n referencing the color is label.color.\n\n Currently, specifying indexes for JSON arrays is not supported.\n\n"
                                                    },
                                                    "alias": {
                                                        "type": "string",
                                                        "fieldDescription": "\n\nA CQL field name alias for this content property.\n\n By defining an alias you are exposing it to CQL and allow other macros and search features to easily use\n your content property in their search.\n\n <strong>Important:</strong> Aliases must be globally unique. Prefixing it with the name of your add-on is the best way to ensure this.\n\n"
                                                    },
                                                    "type": {
                                                        "enum": [
                                                            "number",
                                                            "NUMBER",
                                                            "string",
                                                            "STRING",
                                                            "text",
                                                            "TEXT",
                                                            "date",
                                                            "DATE"
                                                        ],
                                                        "type": "string",
                                                        "fieldDescription": "\n\nThe type of the referenced value.\n\n The type can be one of the following values:\n\n * <code>number</code> - The extracted number will be indexed as a double value for efficient range filtering and sorting.\n * <code>text</code> - The extracted value will be tokenized before indexing, allowing searching for particular words.\n * <code>string</code> - The entire extracted value will be indexed as a single token, without any filtering. When the extraction\n expression evaluates to a JSON array, each element will be indexed separately. This Enables searching for an exact value, e.g. a unique identifier.\n * <code>date</code> - Two representations are possible: either a string following the ISO 8601 datetime format,\n or a long value in Unix time. This enables efficient range filtering and sorting.\n\n"
                                                    }
                                                },
                                                "required": [
                                                    "objectName",
                                                    "type"
                                                ],
                                                "shortClassName": "contentPropertyIndexExtractionConfigurationBean",
                                                "type": "object",
                                                "title": "Content Property Index Extraction Configuration",
                                                "description": "\n\nAn extraction recipe for a single value within a content property JSON object.\n\n An extraction recipe defines which values within your JSON content property will be added to the search\n index and made available to CQL queries as a field.  This can allow you to track custom information\n and make it look like a simple field on the content object.\n\n You can further extend the field definition by including\n <a href=\"../user-interface-support/\">UI support</a>.\n\n See the <a href=\"../content-property-index-key-configuration/\">content property key</a> documentation for\n a complete example.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"objectName\": \"attachment.type\",\n      \"type\": \"string\",\n      \"alias\": \"contentType\",\n      \"uiSupport\": {\n        \"defaultOperator\": \"~\",\n        \"name\": {\n          \"value\": \"Content Type\",\n          \"i18n\": \"attachment.type.name\"\n        },\n        \"tooltip\": {\n          \"value\": \"Content Type Tooltip\",\n          \"i18n\": \"attachment.type.tooltip\"\n        },\n        \"dataUri\": \"/data/content-types\",\n        \"valueType\": \"string\"\n      }\n    }\n\n\n"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nThe list with references to values of JSON objects which will be indexed and the types of referenced values.\n\n"
                                        }
                                    },
                                    "required": [
                                        "propertyKey",
                                        "extractions"
                                    ],
                                    "shortClassName": "contentPropertyIndexKeyConfigurationBean",
                                    "type": "object",
                                    "title": "Content Property Index Key Configuration",
                                    "description": "\n\nA Content Property Index Key Configuration defines which values from your JSON content property\n object should be indexed by Confluence and made available to the CQL search syntax.\n\n Each content property key will define one or more\n <a href=\"../content-property-index-extraction-configuration/\">extractions</a> which will\n allow for multiple values from your JSON content property to be used in CQL. Each extraction defines a single field\n that will be queryable using the relevant CQL syntax as seen below.\n\n In the <a href=\"https://bitbucket.org/mjensen/wordcount\">wordcount</a> example, we store details of the page\n that describe the word and character counts.\n\n After storing this JSON object as a content property:\n\n <pre><code>\n {\n     \"wordCount\": 5\n     \"characterCount\": 22\n }\n </code></pre>\n\n We then define a series of extractions to allow access to the 'wordCount' and 'characterCount'\n properties.\n\n <pre><code>\n {\n   \"propertyKey\": \"wordcount_addon\",\n   \"extractions\": [\n     { \"objectName\": \"wordCount\", \"type\": \"number\" },\n     { \"objectName\": \"characterCount\", \"type\": \"number\" }\n   ]\n }\n </code></pre>\n\n You can access this property in your CQL queries as:\n\n <pre><code>\n space = currentSpace() and content.property[wordcount_addon].wordCount &lt;= 1000\n </code></pre>\n\n This is constructed using the following:\n\n <pre><code>\n content.property[<strong>propertyKey</strong>].<strong>objectName</strong>\n </code></pre>\n\n You can simplify the CQL syntax even further by defining an alias for the extraction:\n\n <pre><code>\n {\n   \"propertyKey\": \"wordcount_addon\",\n   \"extractions\": [\n     { \"objectName\": \"wordCount\", \"type\": \"number\", alias: \"wordcount\" }\n   ]\n }\n </code></pre>\n\n This allows you to refer to your data using the alias:\n\n <pre><code>\n space = currentSpace() and wordcount &lt;= 1000\n </code></pre>\n\n <strong>Important:</strong> the <code>alias</code> must also be globally unique. Prefixing it with the name of your\n add-on is the best way to ensure this.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"propertyKey\": \"attachment\",\n      \"extractions\": [\n        {\n          \"objectName\": \"attachment.size\",\n          \"type\": \"number\"\n        },\n        {\n          \"objectName\": \"attachment.type\",\n          \"type\": \"string\",\n          \"alias\": \"contentType\",\n          \"uiSupport\": {\n            \"defaultOperator\": \"~\",\n            \"name\": {\n              \"value\": \"Content Type\",\n              \"i18n\": \"attachment.type.name\"\n            },\n            \"tooltip\": {\n              \"value\": \"Content Type Tooltip\",\n              \"i18n\": \"attachment.type.tooltip\"\n            },\n            \"dataUri\": \"/data/content-types\",\n            \"valueType\": \"string\"\n          }\n        },\n        {\n          \"objectName\": \"attachment.updated\",\n          \"type\": \"date\"\n        }\n      ]\n    }\n\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nA Content Property Index Key Configuration defines which values from your JSON content property\n object should be indexed and made available to the CQL search syntax.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:customContent": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "uiSupport": {
                                "$ref": "#/definitions/customContentUISupport",
                                "fieldDescription": "\n\nDeclares information for rendering the custom content in the UI.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe description of the custom content\n\n"
                            },
                            "apiSupport": {
                                "$ref": "#/definitions/apiSupport",
                                "fieldDescription": "\n\nThis property allows you to specify the container types your custom content can appear in, and its supported child content types.\n It also allows you to enable indexing of your custom content.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "uiSupport",
                            "name",
                            "apiSupport",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:publishConditions": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "dialog": {
                                "properties": {
                                    "width": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                    },
                                    "header": {
                                        "$ref": "#/definitions/i18nProperty",
                                        "fieldDescription": "\n\nThe header text for the dialog\n\n"
                                    },
                                    "conditions": {
                                        "items": {
                                            "type": "object",
                                            "anyOf": [
                                                {
                                                    "$ref": "#/definitions/singleCondition"
                                                },
                                                {
                                                    "$ref": "#/definitions/compositeCondition"
                                                }
                                            ]
                                        },
                                        "type": "array",
                                        "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nSpecifies the destination of the dialog content. The interpretation of this field depends on the value of the\n <pre>context</pre> field.\n\n Your add-on can receive [additional context](../../context-parameters/) from the app by\n using variable tokens in the URL attribute.\n\n"
                                    },
                                    "height": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "publishConditionDialog",
                                "type": "object",
                                "description": "\n\n<p>The dialog allows you to display their custom content within iFrame in the dialog during publish button click.</p>\n <h4>Trigger dialog close using postMessage</h4>\n You can close dialog by sending postMessage with action = <code>closeConditionalPublishDialog</code>\n <pre><code>\n  $(function(){\n   setTimeout(() => {\n     window.top.postMessage({\n       action: \"closeConditionalPublishDialog\"\n     }, AP._data.origin)\n   }, 10000);\n })\n </code></pre>\n\n",
                                "fieldDescription": "\n\nTriggers the dialog on click of Publish button.\n\n"
                            },
                            "errorMessage": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\n<p>An error message will help you to understand the issue and take necessary action to satisfy the publish condition. <p/>\n <p>\n  Note:  If `dialog` property is missing, it will be displayed as a notification in Confluence.\n <p/>\n\n"
                            },
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context for the URL parameter. As of now only supported value is `addon`.\n <ul>\n     <li><pre>addon</pre> - a URL relative to the add-on's base URL</li>\n </ul>\n\n",
                                "defaultValue": "addon"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "errorMessage",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:dynamicContentMacros": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "bodyType": {
                                "enum": [
                                    "multi-body-rich-text",
                                    "MULTI-BODY-RICH-TEXT",
                                    "rich-text",
                                    "RICH-TEXT",
                                    "plain-text",
                                    "PLAIN-TEXT",
                                    "none",
                                    "NONE"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe type of body content, if any, for this macro.\n\n",
                                "defaultValue": "none"
                            },
                            "editor": {
                                "properties": {
                                    "insertTitle": {
                                        "$ref": "#/definitions/i18nProperty",
                                        "fieldDescription": "\n\nAn optional title that will be shown in the edit dialog header for a new macro.\n\n"
                                    },
                                    "editTitle": {
                                        "$ref": "#/definitions/i18nProperty",
                                        "fieldDescription": "\n\nAn optional title that will be shown in the edit dialog header for an existing macro.\n\n"
                                    },
                                    "width": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe preferred width of the edit dialog, e.g. ``500px``.\n\n"
                                    },
                                    "cacheable": {
                                        "type": "boolean",
                                        "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                        "defaultValue": "false"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL to the macro configuration page in the add-on.\n\n"
                                    },
                                    "height": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe preferred height of the edit dialog, e.g. ``300px``.\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "macroEditorBean",
                                "type": "object",
                                "title": "Macro Editor",
                                "description": "\n\nMacro Parameters go a long way when it comes to macro configuration, but there are cases\n when a macro add-on needs more control over the UI.\n\n Defining a Macro Editor allows you to implement a custom UI for the macro, by specifying a\n URL to a page in your add-on which will be shown in the dialog iFrame.\n\n In order to persist custom data in your macro editor, use the Javascript\n [Confluence API](../../jsapi/confluence/) and the [Dialog API](../../jsapi/dialog/).\n For example:\n\n\n    AP.require([\"confluence\", \"dialog\"], function (confluence, dialog) {\n        function onSubmit() {\n            var macroParams = {\n                myParameter: value\n            };\n            confluence.saveMacro(macroParams);\n            confluence.closeMacroEditor();\n            return true;\n        }\n\n        dialog.getButton(\"submit\").bind(onSubmit);\n    });\n\n In order to retrieve the custom data again when the editor is opened, use `confluence.getMacroData` (see\n [Confluence API](../../jsapi/confluence/)):\n\n    AP.require(\"confluence\", function (confluence) {\n        var macroData = confluence.getMacroData(function(macroParams) {\n            doSomethingWith(macroParams.myParameter);\n        });\n    });\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"editor\": {\n        \"url\": \"/map-editor\",\n        \"editTitle\": {\n          \"value\": \"Edit Map\"\n        },\n        \"insertTitle\": {\n          \"value\": \"Insert Map\"\n        }\n      }\n    }\n\n\n",
                                "fieldDescription": "\n\nThe configuration of a custom macro editor. This is useful if the parameter input field types are\n not sufficient to configure the macro.\n\n"
                            },
                            "featured": {
                                "type": "boolean",
                                "fieldDescription": "\n\nWhether the macro should be \"featured\", meaning having an additional link in the \"Insert More Content\" menu in the editor toolbar.\n\n",
                                "defaultValue": "false"
                            },
                            "aliases": {
                                "items": {
                                    "maxLength": 100,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nDefine aliases for the macro. The macro browser will open for the defined aliases as if it were this macro.\n\n"
                            },
                            "hidden": {
                                "type": "boolean",
                                "fieldDescription": "\n\nIf set to true, the macro will not appear in the macro browser.\n\n",
                                "defaultValue": "false"
                            },
                            "renderModes": {
                                "properties": {
                                    "default": {
                                        "$ref": "#/definitions/embeddedStaticContentMacroBean",
                                        "fieldDescription": "\n\nThis render mode will be used for any static render mode that is not mapped directly.  This is a catch\n all mode which allows you to set a default static fallback for all render modes.\n\n\n\n\n\n    {\n      \"default\": {\n        \"url\": \"/render-map-default\"\n      }\n    }\n\n\n"
                                    },
                                    "pdf": {
                                        "$ref": "#/definitions/embeddedStaticContentMacroBean",
                                        "fieldDescription": "\n\nThis render mode will be used when your macro is being rendered during \"export to pdf\".\n\n\n\n\n\n    {\n      \"pdf\": {\n        \"url\": \"/render-map-pdf\"\n      }\n    }\n\n\n"
                                    },
                                    "word": {
                                        "$ref": "#/definitions/embeddedStaticContentMacroBean",
                                        "fieldDescription": "\n\nThis render mode will be used when your macro is being rendered during \"export to word\".\n\n\n\n\n\n    {\n      \"word\": {\n        \"url\": \"/render-map-word\"\n      }\n    }\n\n\n"
                                    },
                                    "email": {
                                        "$ref": "#/definitions/embeddedStaticContentMacroBean",
                                        "fieldDescription": "\n\nThis render mode will be used when your macro is being rendered during email rendering, and requesting the EXPORT_VIEW representation.\n\n\n\n\n\n    {\n      \"email\": {\n        \"url\": \"/render-map-email\"\n      }\n    }\n\n\n"
                                    }
                                },
                                "shortClassName": "macroRenderModesBean",
                                "type": "object",
                                "title": "Macro Render Modes",
                                "description": "\n\nAllows your dynamic content macro to provide different static macro implementations for different render modes.\n\n Dynamic Content Macros can include style sheets and javascript, allowing the development of rich interactive\n applications.  When your macro is rendered in a web browser this can provide a modern, interactive web experience.\n\n When your macro is rendered to static formats such as PDF, or word, these interactive modes are\n often undesirable, or technically impossible.\n\n Macro Render Modes allow you to map a render mode to a static content macro.  This allows you to\n provide an implementation of your macro for these formats, that will render safely to static formats.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dynamicContentMacros\": [\n          {\n            \"renderModes\": {\n              \"pdf\": {\n                \"url\": \"/render-map-pdf\"\n              },\n              \"default\": {\n                \"url\": \"/render-map-static\"\n              }\n            },\n            \"url\": \"/render-map?pageTitle={page.title}\",\n            \"categories\": [],\n            \"outputType\": \"block\",\n            \"bodyType\": \"none\",\n            \"aliases\": [],\n            \"name\": {\n              \"value\": \"Maps\"\n            },\n            \"key\": \"dynamic-macro-example\"\n          }\n        ]\n      }\n    }\n\n\n",
                                "fieldDescription": "\n\nSince Dynamic Content Macros are rendered in an iframe, you are able to include your own style sheets and javascript.\n When your macro is exported to a static format such as PDF or Word, you can use the `renderModes` property to\n define a mapping between a certain type of output device and a static macro implementation.  This will allow you\n to create a static view of your macro's data where an interactive model is not appropriate.\n\n"
                            },
                            "documentation": {
                                "$ref": "#/definitions/link",
                                "fieldDescription": "\n\nA link to the documentation for the macro.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nA link to the icon resource (80x80 pixels) that will be shown in the macro selection dialog.\n The URL can be absolute or relative to the add-on base URL.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA description of the macro's functionality.\n\n"
                            },
                            "outputType": {
                                "enum": [
                                    "block",
                                    "BLOCK",
                                    "inline",
                                    "INLINE"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nHow this macro should be placed along side other page content.\n\n",
                                "defaultValue": "block"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe link to the add-on resource that provides the macro content.\n This URL has to be relative to the add-on base URL.\n\n Additional context parameters can be passed as variables in the URL:\n <pre><code>\n {\n   \"url\": \"/macro-renderer?body={macro.body}&amp;space_id={space.id}&amp;page_id={page.id}\"\n }\n </code></pre>\n\n Since macro bodies can be of arbitrary size and may contain sensitive data, care must be taken\n as to how its passed to your connect add-on.  You have three options to gain access to the body:\n\n - If you can predict the size of your body and it is consistently less than 128 characters, you\n can include it in the GET request using the `{macro.body}` parameter.\n - If you know your macro contains a body that will often exceed the 128 character threshold\n (or is known to contain sensitive data), then you can include the `{macro.id}` parameter and\n use the Confluence REST api to call back to collect the body.\n - If you want, you can include, `{macro.body}`, `{macro.id}`, and `{macro.truncated}`. This way\n your plugin can call back to confluence only if `{macro.truncated}` is '`true`'.  This will allow\n you to skip the callback if it's not needed.  This would be useful for macros that don't\n contain sensitive data of an unpredictable size.\n\n\n__Note:__ If you include the `{macro.body}` in your URL you are potentially leaking sensitive data\n to any intermediate host on the internet.  This may result in the body being cached or indexed\n by a third party.  If you are concerned about the security of your macro, you should always use\n the `{macro.id}` and use the Confluence REST API to collect the body.\n\n Here's an example:\n\n Declare the variables that are later required to fetch the macro content in the URL:\n <pre><code>\n {\n   \"url\": \"/render-macro?pageId={page.id}&amp;pageVersion={page.version}&amp;macroId={macro.id}\"\n }\n </code></pre>\n\n Then use the Confluence REST API to collect the body, for example directly from the iframe:\n <pre><code>\n AP.require(\"request\", function(request) {\n     var pageId = getUrlParameter(\"pageId\");\n     var pageVersion = getUrlParameter(\"pageVersion\");\n     var macroId = getUrlParameter(\"macroId\");\n     request({\n         url: \"/rest/api/content/\" + pageId +\n              \"/history/\" + pageVersion +\n              \"/macro/id/\" + macroId,\n         success: function(response) {\n             var macro = JSON.parse(response);\n             process(macro.body);\n         }\n     });\n });\n </code></pre>\n\n __Preview Mode:__ If you use the `{macro.id}` in your URL, the REST api will not return the macro body during\n a preview request, because the page has not been saved yet. You can use the `{output.type}` parameter to detect\n whether the macro is rendered in preview mode and adapt the response accordingly.\n\n __Note:__ `macro.body` will not be truncated when `renderingMethod` field was set to `POST` in static content macro.\n Refer to the [`Static Content Macros`](../static-content-macro/) for information on\n how to set this field.\n\n Currently supported variables for macros are:\n\n - `macro.hash`: The hash of the macro body (deprecated, use the macro.id)\n - `macro.id`: The id of the macro\n - `macro.body`: The macro body, truncated to 128 characters\n - `macro.truncated`: True if the macro body was truncated, false of not\n - `page.id`: The page ID, e.g. `1376295`\n - `page.title`: The page title, e.g. `My Page`\n - `page.type`: The page type, e.g. `page`\n - `page.version`: The page version, e.g. `6`\n - `space.id`: The space ID, e.g. `65537`\n - `space.key`: The space key, e.g. `AC`\n - `user.id`: The user ID, e.g. `admin`  (deprecated in GDPR mode)\n - `user.key`: The user key, e.g. `ff80808143087d180143087d3a910004` (deprecated in GDPR mode)\n - `output.type`: The output type, e.g. `display` or `preview`\n\nContext parameters for macros are also required in the URL. Please see the\n [Macro Input Parameter](../macro-input-parameter/) documentation for details.\n\n"
                            },
                            "propertyPanel": {
                                "properties": {
                                    "controls": {
                                        "items": {
                                            "type": "object",
                                            "anyOf": [
                                                {
                                                    "properties": {
                                                        "label": {
                                                            "$ref": "#/definitions/i18nProperty",
                                                            "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "button",
                                                                "BUTTON"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
                                                        },
                                                        "key": {
                                                            "pattern": "^[a-zA-Z0-9-]+$",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "label",
                                                        "type",
                                                        "key"
                                                    ],
                                                    "additionalProperties": true,
                                                    "shortClassName": "buttonControlBean",
                                                    "type": "object",
                                                    "title": "ButtonControl",
                                                    "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "controls": {
                                                            "items": {
                                                                "properties": {
                                                                    "macroParameterValue": {
                                                                        "maxLength": 10000,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
                                                                    },
                                                                    "label": {
                                                                        "$ref": "#/definitions/i18nProperty",
                                                                        "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "togglebutton",
                                                                            "TOGGLEBUTTON"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
                                                                    },
                                                                    "key": {
                                                                        "pattern": "^[a-zA-Z0-9-]+$",
                                                                        "maxLength": 100,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "macroParameterValue",
                                                                    "label",
                                                                    "type",
                                                                    "key"
                                                                ],
                                                                "additionalProperties": true,
                                                                "shortClassName": "macroToggleButtonControlBean",
                                                                "type": "object",
                                                                "title": "ToggleButtonControl",
                                                                "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"togglebutton\",\n      \"macroParameterValue\": \"macroParameterValue 0\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-toggle-button-0\"\n    }\n\n\n"
                                                            },
                                                            "type": "array",
                                                            "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
                                                        },
                                                        "macroParameter": {
                                                            "pattern": "[-_a-z0-9\\.]+",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "togglegroup",
                                                                "TOGGLEGROUP"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "controls",
                                                        "macroParameter",
                                                        "type"
                                                    ],
                                                    "shortClassName": "macroToggleGroupBean",
                                                    "type": "object",
                                                    "title": "ToggleGroup",
                                                    "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    [\n      {\n        \"type\": \"togglegroup\",\n        \"macroParameter\": \"toggleGroupMacroParameter\",\n        \"controls\": [\n          {\n            \"type\": \"togglebutton\",\n            \"macroParameterValue\": \"macroParameterValue 0\",\n            \"label\": {\n              \"value\": \"My Custom Control 0\"\n            },\n            \"key\": \"my-custom-toggle-button-0\"\n          },\n          {\n            \"type\": \"togglebutton\",\n            \"macroParameterValue\": \"macroParameterValue 1\",\n            \"label\": {\n              \"value\": \"My Custom Control 1\"\n            },\n            \"key\": \"my-custom-toggle-button-1\"\n          }\n        ]\n      }\n    ]\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "controls": {
                                                            "items": {
                                                                "properties": {
                                                                    "label": {
                                                                        "$ref": "#/definitions/i18nProperty",
                                                                        "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "button",
                                                                            "BUTTON"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
                                                                    },
                                                                    "key": {
                                                                        "pattern": "^[a-zA-Z0-9-]+$",
                                                                        "maxLength": 100,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "label",
                                                                    "type",
                                                                    "key"
                                                                ],
                                                                "additionalProperties": true,
                                                                "shortClassName": "buttonControlBean",
                                                                "type": "object",
                                                                "title": "ButtonControl",
                                                                "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                            },
                                                            "type": "array",
                                                            "fieldDescription": "\n\nControls which will appear in the control group\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "group",
                                                                "GROUP"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "controls",
                                                        "type"
                                                    ],
                                                    "shortClassName": "controlGroupBean",
                                                    "type": "object",
                                                    "title": "ControlGroup",
                                                    "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    [\n      {\n        \"type\": \"group\",\n        \"controls\": [\n          {\n            \"type\": \"button\",\n            \"label\": {\n              \"value\": \"My Custom Control 0\"\n            },\n            \"key\": \"my-custom-control-0\"\n          },\n          {\n            \"type\": \"button\",\n            \"label\": {\n              \"value\": \"My Custom Control 1\"\n            },\n            \"key\": \"my-custom-control-1\"\n          }\n        ]\n      }\n    ]\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "macroParameter": {
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "text",
                                                                "TEXT"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
                                                        },
                                                        "key": {
                                                            "pattern": "^[a-zA-Z0-9-]+$",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n    {\n        \"key\": \"my-addon\",\n        \"modules\": {\n            \"configurePage\": {\n                \"key\": \"configure-me\",\n            }\n        }\n    }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "macroParameter",
                                                        "type",
                                                        "key"
                                                    ],
                                                    "shortClassName": "textControlBean",
                                                    "type": "object",
                                                    "title": "TextControl",
                                                    "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                }
                                            ]
                                        },
                                        "type": "array",
                                        "fieldDescription": "\n\nList of controls which will be added to the macro property panel\n\n"
                                    },
                                    "cacheable": {
                                        "type": "boolean",
                                        "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                        "defaultValue": "false"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL of the add-on endpoint which will be served as a hidden iframe inside the property panel\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "macroPropertyPanelBean",
                                "type": "object",
                                "title": "Macro Property Panel",
                                "description": "\n\nDefining a Macro Property panel allows you to add a hidden iframe to your macro's\n property panel. The iframe is loaded as soon as the property panel is opened.\n\n In order to persist custom data using your property panel, use the Javascript\n <a href=\"../../jsapi/confluence/\">Confluence API</a>.\n For example:\n\n    AP.require([\"confluence\"], function (confluence) {\n        var macroParams = {\n            myParameter: value\n        };\n        confluence.saveMacro(macroParams);\n    });\n\n In order to retrieve the custom data again when the property panel is opened, use `confluence.getMacroData` (see\n <a href=\"../../jsapi/confluence/\">Confluence API</a>):\n\n    AP.require(\"confluence\", function (confluence) {\n        var macroData = confluence.getMacroData(function(macroParams) {\n            doSomethingWith(macroParams.myParameter);\n        });\n    });\n\n Dialogs may also be created. Use `dialog.create` (see\n <a href=\"../../jsapi/dialog/\">Dialog API</a>):\n\n    AP.require('dialog', function(dialog) {\n        dialog.create({\n            key: 'my-module-key',\n            width: '500px',\n            height: '200px',\n            chrome: true\n        }).on(\"close\", callbackFunc);\n    });\n\n",
                                "fieldDescription": "\n\nThe configuration of a property panel. Specify a hidden iframe to be loaded in the macro's property panel.\n\n"
                            },
                            "autoconvert": {
                                "$ref": "#/definitions/autoconvert",
                                "fieldDescription": "\n\nURL patterns associated with this macro. If a URL matching a defined pattern is pasted into the editor, this macro\n  will be created and will replace the URL string.\n\n"
                            },
                            "imagePlaceholder": {
                                "$ref": "#/definitions/imagePlaceholder",
                                "fieldDescription": "\n\nThe image rendered in the editor as the macro placeholder. It can only be used with bodyless macros and will behave\n just like a regular macro placeholder. Any parameter changes in the macro browser will cause the image\n to be reloaded - so that changes can be seen.\n\n"
                            },
                            "refDataSchema": {
                                "properties": {
                                    "outputType": {
                                        "maxLength": 255,
                                        "type": "string",
                                        "fieldDescription": "\n\n"
                                    },
                                    "inputType": {
                                        "maxLength": 255,
                                        "type": "string",
                                        "fieldDescription": "\n\n"
                                    }
                                },
                                "shortClassName": "macroRefDataSchemaBean",
                                "type": "object",
                                "description": "\n\nDefines what a dynamic content macro can consume and produce to interoperate with other macros.\n\n\n\n\n\n    {\n      \"inputType\": \"table\",\n      \"outputType\": \"chart\"\n    }\n\n\n\n\n <p>This is useful to chain multiple macros with each other. For example a macro can provide adf table data\n which can be used to produce a chart with it.</p>\n\n",
                                "fieldDescription": "\n\n"
                            },
                            "width": {
                                "maxLength": 10,
                                "type": "string",
                                "fieldDescription": "\n\nThe preferred width of the macro content.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "categories": {
                                "items": {
                                    "maxLength": 100,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe categories the macro should appear in. A macro with no category will show up in the default 'All' category.\n\n Currently, the following categories are supported by Confluence:\n\n * `admin`: Administration\n * `communication`: Communication\n * `confluence-content`: Confluence Content\n * `development`: Development\n * `external-content`: External Content\n * `formatting`: Formatting\n * `media`: Media\n * `navigation`: Navigation\n * `reporting`: Reporting\n * `visuals`: Visuals &amp; Images\n\n"
                            },
                            "parameters": {
                                "items": {
                                    "properties": {
                                        "identifier": {
                                            "pattern": "[-_a-z0-9\\.]+",
                                            "type": "string",
                                            "fieldDescription": "\n\nA unique identifier for the parameter.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n This identifier will be used in the query parameters of the add-on URL.\n\n"
                                        },
                                        "aliases": {
                                            "items": {
                                                "maxLength": 100,
                                                "type": "string"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nAliases for the macro parameter.\n\n"
                                        },
                                        "hidden": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nDetermines if the parameter will be displayed in the macro editor.\n\n",
                                            "defaultValue": "false"
                                        },
                                        "indexing": {
                                            "$ref": "#/definitions/indexing",
                                            "fieldDescription": "\n\nDefines how this macro parameter will be indexed\n\n"
                                        },
                                        "defaultValue": {
                                            "maxLength": 1000,
                                            "type": "string",
                                            "fieldDescription": "\n\nThe default value for the parameter.\n\n"
                                        },
                                        "values": {
                                            "items": {
                                                "maxLength": 1000,
                                                "type": "string"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nDescribes the ``enum`` values - only applicable for enum typed parameters.\n\n"
                                        },
                                        "name": {
                                            "$ref": "#/definitions/i18nProperty",
                                            "fieldDescription": "\n\nThe human readable name of the parameter which will be displayed in the UI.\n\n"
                                        },
                                        "multiple": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nWhether it takes multiple values.\n\n",
                                            "defaultValue": "false"
                                        },
                                        "description": {
                                            "$ref": "#/definitions/i18nProperty",
                                            "fieldDescription": "\n\nThe description of the parameter\n\n"
                                        },
                                        "type": {
                                            "enum": [
                                                "attachment",
                                                "ATTACHMENT",
                                                "boolean",
                                                "BOOLEAN",
                                                "confluence-content",
                                                "CONFLUENCE-CONTENT",
                                                "enum",
                                                "ENUM",
                                                "int",
                                                "INT",
                                                "label",
                                                "LABEL",
                                                "spacekey",
                                                "SPACEKEY",
                                                "string",
                                                "STRING",
                                                "url",
                                                "URL",
                                                "username",
                                                "USERNAME"
                                            ],
                                            "type": "string",
                                            "fieldDescription": "\n\nThe type of parameter.\n\n Currently the following parameter types are supported in the macro browser's UI:\n\n * `attachment`: displays an autocomplete field for search on attachment filenames.\n * `boolean`: displays a check box.\n * `confluence-content`: displays an autocomplete field for search on page and blog titles.\n * `enum`: displays a select field.\n * `spacekey`: displays an autocomplete field for search on space names.\n * `string`: displays an input field (this is the default if unknown type).\n * `username`: displays an autocomplete field for search on username and full name currently, and will be overridden by Atlassian AccountId after GDPR deprecation period ends. During the deprecation only, a companion parameter with \".accountId\" suffix of the original parameter name will be added.\n\n"
                                        },
                                        "required": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nWhether it is a required parameter.\n\n",
                                            "defaultValue": "false"
                                        }
                                    },
                                    "required": [
                                        "identifier",
                                        "name",
                                        "type"
                                    ],
                                    "shortClassName": "macroParameterBean",
                                    "type": "object",
                                    "title": "Macro Input Parameter",
                                    "description": "\n\nDescribes a parameter input field for a macro.\n\n Any declared parameters must also be included in the URL value of the macro in order to serialise this value, for\n example, for a macro with a parameter `view` it should be added to the macro url as follows:\n\n <pre><code>\n\"dynamicContentMacros\": [{\n   ...\n   \"url\": \"/render-map?pageTitle={page.title}&amp;viewChoice={view}\",\n   ...\n}]\n </code></pre>\n\n <h2>Example</h2>\n\n\n\n\n\n    {\n      \"dynamicContentMacros\": {\n        \"renderModes\": {},\n        \"url\": \"/my-macro\",\n        \"categories\": [],\n        \"outputType\": \"block\",\n        \"bodyType\": \"none\",\n        \"aliases\": [],\n        \"parameters\": [\n          {\n            \"identifier\": \"view\",\n            \"name\": {\n              \"value\": \"Map View\"\n            },\n            \"description\": {\n              \"value\": \"Allows switching between view types\"\n            },\n            \"type\": \"enum\",\n            \"required\": true,\n            \"multiple\": false,\n            \"defaultValue\": \"Map\",\n            \"values\": [\n              \"Map\",\n              \"Satellite\"\n            ],\n            \"hidden\": false,\n            \"indexing\": {\n              \"enabled\": true\n            }\n          }\n        ],\n        \"name\": {\n          \"value\": \"My macro with placeholder\"\n        },\n        \"key\": \"my-macro-key\"\n      }\n    }\n\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe list of parameter input fields that will be displayed.\n\n"
                            },
                            "height": {
                                "maxLength": 10,
                                "type": "string",
                                "fieldDescription": "\n\nThe preferred height of the macro content, e.g. ``10px``,``100%``.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:staticContentMacros": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "bodyType": {
                                "enum": [
                                    "rich-text",
                                    "RICH-TEXT",
                                    "plain-text",
                                    "PLAIN-TEXT",
                                    "none",
                                    "NONE"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe type of body content, if any, for this macro.\n\n",
                                "defaultValue": "none"
                            },
                            "editor": {
                                "properties": {
                                    "insertTitle": {
                                        "$ref": "#/definitions/i18nProperty",
                                        "fieldDescription": "\n\nAn optional title that will be shown in the edit dialog header for a new macro.\n\n"
                                    },
                                    "editTitle": {
                                        "$ref": "#/definitions/i18nProperty",
                                        "fieldDescription": "\n\nAn optional title that will be shown in the edit dialog header for an existing macro.\n\n"
                                    },
                                    "width": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe preferred width of the edit dialog, e.g. ``500px``.\n\n"
                                    },
                                    "cacheable": {
                                        "type": "boolean",
                                        "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                        "defaultValue": "false"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL to the macro configuration page in the add-on.\n\n"
                                    },
                                    "height": {
                                        "maxLength": 10,
                                        "type": "string",
                                        "fieldDescription": "\n\nThe preferred height of the edit dialog, e.g. ``300px``.\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "macroEditorBean",
                                "type": "object",
                                "title": "Macro Editor",
                                "description": "\n\nMacro Parameters go a long way when it comes to macro configuration, but there are cases\n when a macro add-on needs more control over the UI.\n\n Defining a Macro Editor allows you to implement a custom UI for the macro, by specifying a\n URL to a page in your add-on which will be shown in the dialog iFrame.\n\n In order to persist custom data in your macro editor, use the Javascript\n [Confluence API](../../jsapi/confluence/) and the [Dialog API](../../jsapi/dialog/).\n For example:\n\n\n    AP.require([\"confluence\", \"dialog\"], function (confluence, dialog) {\n        function onSubmit() {\n            var macroParams = {\n                myParameter: value\n            };\n            confluence.saveMacro(macroParams);\n            confluence.closeMacroEditor();\n            return true;\n        }\n\n        dialog.getButton(\"submit\").bind(onSubmit);\n    });\n\n In order to retrieve the custom data again when the editor is opened, use `confluence.getMacroData` (see\n [Confluence API](../../jsapi/confluence/)):\n\n    AP.require(\"confluence\", function (confluence) {\n        var macroData = confluence.getMacroData(function(macroParams) {\n            doSomethingWith(macroParams.myParameter);\n        });\n    });\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"editor\": {\n        \"url\": \"/map-editor\",\n        \"editTitle\": {\n          \"value\": \"Edit Map\"\n        },\n        \"insertTitle\": {\n          \"value\": \"Insert Map\"\n        }\n      }\n    }\n\n\n",
                                "fieldDescription": "\n\nThe configuration of a custom macro editor. This is useful if the parameter input field types are\n not sufficient to configure the macro.\n\n"
                            },
                            "featured": {
                                "type": "boolean",
                                "fieldDescription": "\n\nWhether the macro should be \"featured\", meaning having an additional link in the \"Insert More Content\" menu in the editor toolbar.\n\n",
                                "defaultValue": "false"
                            },
                            "aliases": {
                                "items": {
                                    "maxLength": 100,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nDefine aliases for the macro. The macro browser will open for the defined aliases as if it were this macro.\n\n"
                            },
                            "hidden": {
                                "type": "boolean",
                                "fieldDescription": "\n\nIf set to true, the macro will not appear in the macro browser.\n\n",
                                "defaultValue": "false"
                            },
                            "documentation": {
                                "$ref": "#/definitions/link",
                                "fieldDescription": "\n\nA link to the documentation for the macro.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nA link to the icon resource (80x80 pixels) that will be shown in the macro selection dialog.\n The URL can be absolute or relative to the add-on base URL.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA description of the macro's functionality.\n\n"
                            },
                            "outputType": {
                                "enum": [
                                    "block",
                                    "BLOCK",
                                    "inline",
                                    "INLINE"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nHow this macro should be placed along side other page content.\n\n",
                                "defaultValue": "block"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nThe link to the add-on resource that provides the macro content.\n This URL has to be relative to the add-on base URL.\n\n Additional context parameters can be passed as variables in the URL:\n <pre><code>\n {\n   \"url\": \"/macro-renderer?body={macro.body}&amp;space_id={space.id}&amp;page_id={page.id}\"\n }\n </code></pre>\n\n Since macro bodies can be of arbitrary size and may contain sensitive data, care must be taken\n as to how its passed to your connect add-on.  You have three options to gain access to the body:\n\n - If you can predict the size of your body and it is consistently less than 128 characters, you\n can include it in the GET request using the `{macro.body}` parameter.\n - If you know your macro contains a body that will often exceed the 128 character threshold\n (or is known to contain sensitive data), then you can include the `{macro.id}` parameter and\n use the Confluence REST api to call back to collect the body.\n - If you want, you can include, `{macro.body}`, `{macro.id}`, and `{macro.truncated}`. This way\n your plugin can call back to confluence only if `{macro.truncated}` is '`true`'.  This will allow\n you to skip the callback if it's not needed.  This would be useful for macros that don't\n contain sensitive data of an unpredictable size.\n\n\n__Note:__ If you include the `{macro.body}` in your URL you are potentially leaking sensitive data\n to any intermediate host on the internet.  This may result in the body being cached or indexed\n by a third party.  If you are concerned about the security of your macro, you should always use\n the `{macro.id}` and use the Confluence REST API to collect the body.\n\n Here's an example:\n\n Declare the variables that are later required to fetch the macro content in the URL:\n <pre><code>\n {\n   \"url\": \"/render-macro?pageId={page.id}&amp;pageVersion={page.version}&amp;macroId={macro.id}\"\n }\n </code></pre>\n\n Then use the Confluence REST API to collect the body, for example directly from the iframe:\n <pre><code>\n AP.require(\"request\", function(request) {\n     var pageId = getUrlParameter(\"pageId\");\n     var pageVersion = getUrlParameter(\"pageVersion\");\n     var macroId = getUrlParameter(\"macroId\");\n     request({\n         url: \"/rest/api/content/\" + pageId +\n              \"/history/\" + pageVersion +\n              \"/macro/id/\" + macroId,\n         success: function(response) {\n             var macro = JSON.parse(response);\n             process(macro.body);\n         }\n     });\n });\n </code></pre>\n\n __Preview Mode:__ If you use the `{macro.id}` in your URL, the REST api will not return the macro body during\n a preview request, because the page has not been saved yet. You can use the `{output.type}` parameter to detect\n whether the macro is rendered in preview mode and adapt the response accordingly.\n\n __Note:__ `macro.body` will not be truncated when `renderingMethod` field was set to `POST` in static content macro.\n Refer to the [`Static Content Macros`](../static-content-macro/) for information on\n how to set this field.\n\n Currently supported variables for macros are:\n\n - `macro.hash`: The hash of the macro body (deprecated, use the macro.id)\n - `macro.id`: The id of the macro\n - `macro.body`: The macro body, truncated to 128 characters\n - `macro.truncated`: True if the macro body was truncated, false of not\n - `page.id`: The page ID, e.g. `1376295`\n - `page.title`: The page title, e.g. `My Page`\n - `page.type`: The page type, e.g. `page`\n - `page.version`: The page version, e.g. `6`\n - `space.id`: The space ID, e.g. `65537`\n - `space.key`: The space key, e.g. `AC`\n - `user.id`: The user ID, e.g. `admin`  (deprecated in GDPR mode)\n - `user.key`: The user key, e.g. `ff80808143087d180143087d3a910004` (deprecated in GDPR mode)\n - `output.type`: The output type, e.g. `display` or `preview`\n\nContext parameters for macros are also required in the URL. Please see the\n [Macro Input Parameter](../macro-input-parameter/) documentation for details.\n\n"
                            },
                            "propertyPanel": {
                                "properties": {
                                    "controls": {
                                        "items": {
                                            "type": "object",
                                            "anyOf": [
                                                {
                                                    "properties": {
                                                        "controls": {
                                                            "items": {
                                                                "properties": {
                                                                    "macroParameterValue": {
                                                                        "maxLength": 10000,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
                                                                    },
                                                                    "label": {
                                                                        "$ref": "#/definitions/i18nProperty",
                                                                        "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "togglebutton",
                                                                            "TOGGLEBUTTON"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
                                                                    },
                                                                    "key": {
                                                                        "pattern": "^[a-zA-Z0-9-]+$",
                                                                        "maxLength": 100,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "macroParameterValue",
                                                                    "label",
                                                                    "type",
                                                                    "key"
                                                                ],
                                                                "additionalProperties": true,
                                                                "shortClassName": "macroToggleButtonControlBean",
                                                                "type": "object",
                                                                "title": "ToggleButtonControl",
                                                                "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"togglebutton\",\n      \"macroParameterValue\": \"macroParameterValue 0\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-toggle-button-0\"\n    }\n\n\n"
                                                            },
                                                            "type": "array",
                                                            "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
                                                        },
                                                        "macroParameter": {
                                                            "pattern": "[-_a-z0-9\\.]+",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "togglegroup",
                                                                "TOGGLEGROUP"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "controls",
                                                        "macroParameter",
                                                        "type"
                                                    ],
                                                    "shortClassName": "macroToggleGroupBean",
                                                    "type": "object",
                                                    "title": "ToggleGroup",
                                                    "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    [\n      {\n        \"type\": \"togglegroup\",\n        \"macroParameter\": \"toggleGroupMacroParameter\",\n        \"controls\": [\n          {\n            \"type\": \"togglebutton\",\n            \"macroParameterValue\": \"macroParameterValue 0\",\n            \"label\": {\n              \"value\": \"My Custom Control 0\"\n            },\n            \"key\": \"my-custom-toggle-button-0\"\n          },\n          {\n            \"type\": \"togglebutton\",\n            \"macroParameterValue\": \"macroParameterValue 1\",\n            \"label\": {\n              \"value\": \"My Custom Control 1\"\n            },\n            \"key\": \"my-custom-toggle-button-1\"\n          }\n        ]\n      }\n    ]\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "label": {
                                                            "$ref": "#/definitions/i18nProperty",
                                                            "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "button",
                                                                "BUTTON"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
                                                        },
                                                        "key": {
                                                            "pattern": "^[a-zA-Z0-9-]+$",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "label",
                                                        "type",
                                                        "key"
                                                    ],
                                                    "additionalProperties": true,
                                                    "shortClassName": "buttonControlBean",
                                                    "type": "object",
                                                    "title": "ButtonControl",
                                                    "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "macroParameter": {
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "text",
                                                                "TEXT"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
                                                        },
                                                        "key": {
                                                            "pattern": "^[a-zA-Z0-9-]+$",
                                                            "maxLength": 100,
                                                            "type": "string",
                                                            "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n    {\n        \"key\": \"my-addon\",\n        \"modules\": {\n            \"configurePage\": {\n                \"key\": \"configure-me\",\n            }\n        }\n    }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "macroParameter",
                                                        "type",
                                                        "key"
                                                    ],
                                                    "shortClassName": "textControlBean",
                                                    "type": "object",
                                                    "title": "TextControl",
                                                    "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                },
                                                {
                                                    "properties": {
                                                        "controls": {
                                                            "items": {
                                                                "properties": {
                                                                    "label": {
                                                                        "$ref": "#/definitions/i18nProperty",
                                                                        "fieldDescription": "\n\nText which will appear inside the button\n\n"
                                                                    },
                                                                    "type": {
                                                                        "enum": [
                                                                            "button",
                                                                            "BUTTON"
                                                                        ],
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
                                                                    },
                                                                    "key": {
                                                                        "pattern": "^[a-zA-Z0-9-]+$",
                                                                        "maxLength": 100,
                                                                        "type": "string",
                                                                        "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "label",
                                                                    "type",
                                                                    "key"
                                                                ],
                                                                "additionalProperties": true,
                                                                "shortClassName": "buttonControlBean",
                                                                "type": "object",
                                                                "title": "ButtonControl",
                                                                "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"type\": \"button\",\n      \"label\": {\n        \"value\": \"My Custom Control 0\"\n      },\n      \"key\": \"my-custom-control-0\"\n    }\n\n\n"
                                                            },
                                                            "type": "array",
                                                            "fieldDescription": "\n\nControls which will appear in the control group\n\n"
                                                        },
                                                        "type": {
                                                            "enum": [
                                                                "group",
                                                                "GROUP"
                                                            ],
                                                            "type": "string",
                                                            "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
                                                        }
                                                    },
                                                    "required": [
                                                        "controls",
                                                        "type"
                                                    ],
                                                    "shortClassName": "controlGroupBean",
                                                    "type": "object",
                                                    "title": "ControlGroup",
                                                    "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n    [\n      {\n        \"type\": \"group\",\n        \"controls\": [\n          {\n            \"type\": \"button\",\n            \"label\": {\n              \"value\": \"My Custom Control 0\"\n            },\n            \"key\": \"my-custom-control-0\"\n          },\n          {\n            \"type\": \"button\",\n            \"label\": {\n              \"value\": \"My Custom Control 1\"\n            },\n            \"key\": \"my-custom-control-1\"\n          }\n        ]\n      }\n    ]\n\n\n"
                                                }
                                            ]
                                        },
                                        "type": "array",
                                        "fieldDescription": "\n\nList of controls which will be added to the macro property panel\n\n"
                                    },
                                    "cacheable": {
                                        "type": "boolean",
                                        "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                        "defaultValue": "false"
                                    },
                                    "url": {
                                        "type": "string",
                                        "fieldDescription": "\n\nThe URL of the add-on endpoint which will be served as a hidden iframe inside the property panel\n\n"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "shortClassName": "macroPropertyPanelBean",
                                "type": "object",
                                "title": "Macro Property Panel",
                                "description": "\n\nDefining a Macro Property panel allows you to add a hidden iframe to your macro's\n property panel. The iframe is loaded as soon as the property panel is opened.\n\n In order to persist custom data using your property panel, use the Javascript\n <a href=\"../../jsapi/confluence/\">Confluence API</a>.\n For example:\n\n    AP.require([\"confluence\"], function (confluence) {\n        var macroParams = {\n            myParameter: value\n        };\n        confluence.saveMacro(macroParams);\n    });\n\n In order to retrieve the custom data again when the property panel is opened, use `confluence.getMacroData` (see\n <a href=\"../../jsapi/confluence/\">Confluence API</a>):\n\n    AP.require(\"confluence\", function (confluence) {\n        var macroData = confluence.getMacroData(function(macroParams) {\n            doSomethingWith(macroParams.myParameter);\n        });\n    });\n\n Dialogs may also be created. Use `dialog.create` (see\n <a href=\"../../jsapi/dialog/\">Dialog API</a>):\n\n    AP.require('dialog', function(dialog) {\n        dialog.create({\n            key: 'my-module-key',\n            width: '500px',\n            height: '200px',\n            chrome: true\n        }).on(\"close\", callbackFunc);\n    });\n\n",
                                "fieldDescription": "\n\nThe configuration of a property panel. Specify a hidden iframe to be loaded in the macro's property panel.\n\n"
                            },
                            "autoconvert": {
                                "$ref": "#/definitions/autoconvert",
                                "fieldDescription": "\n\nURL patterns associated with this macro. If a URL matching a defined pattern is pasted into the editor, this macro\n  will be created and will replace the URL string.\n\n"
                            },
                            "imagePlaceholder": {
                                "$ref": "#/definitions/imagePlaceholder",
                                "fieldDescription": "\n\nThe image rendered in the editor as the macro placeholder. It can only be used with bodyless macros and will behave\n just like a regular macro placeholder. Any parameter changes in the macro browser will cause the image\n to be reloaded - so that changes can be seen.\n\n"
                            },
                            "renderingMethod": {
                                "enum": [
                                    "get",
                                    "GET",
                                    "post",
                                    "POST"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nHTTP method that will be used in the HTTP request.\n\n For example: <br>\n If the rendering method was set to POST like this:\n <pre><code>\n {\n     \"renderingMethod\": \"POST\",\n     \"url\": \"/macro-renderer?body={macro.body}\"\n }\n </code></pre>\n\n Then Confluence will send a POST request to <code>/macro-renderer</code> like:<br>\n <pre><code>\n   POST /macro-renderer HTTP/1.1\n   Authorization: JWT &lt;JWT token&gt;\n   Content-Type: application/x-www-form-urlencoded\n   Transfer-Encoding: chunked\n   Host: &lt;host&gt;\n   User-Agent: Atlassian HttpClient &lt;atlassian http client version&gt; / Confluence-&lt;confluence version&gt; / Atlassian-Connect/&lt;connect version&gt;\n\n   body=&lt;macro body&gt;&amp;&lt;some value&gt;&amp;pageVersion=&lt;some value&gt;&amp;tz=&lt;some value&gt;&amp;lic=&lt;some value&gt;&amp;user_key=&lt;some value&gt;&amp;xd&amp;_e=&lt;some value&gt;&amp;cp=&lt;some value&gt;&amp;xdm_c=&lt;some value&gt;&amp;cv=&lt;some value&gt;&amp;user_id=&lt;some value&gt;\n </code></pre>\n\n <strong>Note:</strong> All the parameters will be sent via POST payload in\n <code>application/x-www-form-urlencoded</code> instead of URL query parameters.<br>\n The latest version of <code>Atlassian Connect Express</code> and <code>Atlassian Connect Spring Boot</code>\n have built-in support for verifying requests sent by POST. However you might need to implement the query hash\n verification if the framework you are using doesn't support it.\n\n",
                                "defaultValue": "get"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "categories": {
                                "items": {
                                    "maxLength": 100,
                                    "type": "string"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe categories the macro should appear in. A macro with no category will show up in the default 'All' category.\n\n Currently, the following categories are supported by Confluence:\n\n * `admin`: Administration\n * `communication`: Communication\n * `confluence-content`: Confluence Content\n * `development`: Development\n * `external-content`: External Content\n * `formatting`: Formatting\n * `media`: Media\n * `navigation`: Navigation\n * `reporting`: Reporting\n * `visuals`: Visuals &amp; Images\n\n"
                            },
                            "parameters": {
                                "items": {
                                    "properties": {
                                        "identifier": {
                                            "pattern": "[-_a-z0-9\\.]+",
                                            "type": "string",
                                            "fieldDescription": "\n\nA unique identifier for the parameter.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n This identifier will be used in the query parameters of the add-on URL.\n\n"
                                        },
                                        "aliases": {
                                            "items": {
                                                "maxLength": 100,
                                                "type": "string"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nAliases for the macro parameter.\n\n"
                                        },
                                        "hidden": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nDetermines if the parameter will be displayed in the macro editor.\n\n",
                                            "defaultValue": "false"
                                        },
                                        "indexing": {
                                            "$ref": "#/definitions/indexing",
                                            "fieldDescription": "\n\nDefines how this macro parameter will be indexed\n\n"
                                        },
                                        "defaultValue": {
                                            "maxLength": 1000,
                                            "type": "string",
                                            "fieldDescription": "\n\nThe default value for the parameter.\n\n"
                                        },
                                        "values": {
                                            "items": {
                                                "maxLength": 1000,
                                                "type": "string"
                                            },
                                            "type": "array",
                                            "fieldDescription": "\n\nDescribes the ``enum`` values - only applicable for enum typed parameters.\n\n"
                                        },
                                        "name": {
                                            "$ref": "#/definitions/i18nProperty",
                                            "fieldDescription": "\n\nThe human readable name of the parameter which will be displayed in the UI.\n\n"
                                        },
                                        "multiple": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nWhether it takes multiple values.\n\n",
                                            "defaultValue": "false"
                                        },
                                        "description": {
                                            "$ref": "#/definitions/i18nProperty",
                                            "fieldDescription": "\n\nThe description of the parameter\n\n"
                                        },
                                        "type": {
                                            "enum": [
                                                "attachment",
                                                "ATTACHMENT",
                                                "boolean",
                                                "BOOLEAN",
                                                "confluence-content",
                                                "CONFLUENCE-CONTENT",
                                                "enum",
                                                "ENUM",
                                                "int",
                                                "INT",
                                                "label",
                                                "LABEL",
                                                "spacekey",
                                                "SPACEKEY",
                                                "string",
                                                "STRING",
                                                "url",
                                                "URL",
                                                "username",
                                                "USERNAME"
                                            ],
                                            "type": "string",
                                            "fieldDescription": "\n\nThe type of parameter.\n\n Currently the following parameter types are supported in the macro browser's UI:\n\n * `attachment`: displays an autocomplete field for search on attachment filenames.\n * `boolean`: displays a check box.\n * `confluence-content`: displays an autocomplete field for search on page and blog titles.\n * `enum`: displays a select field.\n * `spacekey`: displays an autocomplete field for search on space names.\n * `string`: displays an input field (this is the default if unknown type).\n * `username`: displays an autocomplete field for search on username and full name currently, and will be overridden by Atlassian AccountId after GDPR deprecation period ends. During the deprecation only, a companion parameter with \".accountId\" suffix of the original parameter name will be added.\n\n"
                                        },
                                        "required": {
                                            "type": "boolean",
                                            "fieldDescription": "\n\nWhether it is a required parameter.\n\n",
                                            "defaultValue": "false"
                                        }
                                    },
                                    "required": [
                                        "identifier",
                                        "name",
                                        "type"
                                    ],
                                    "shortClassName": "macroParameterBean",
                                    "type": "object",
                                    "title": "Macro Input Parameter",
                                    "description": "\n\nDescribes a parameter input field for a macro.\n\n Any declared parameters must also be included in the URL value of the macro in order to serialise this value, for\n example, for a macro with a parameter `view` it should be added to the macro url as follows:\n\n <pre><code>\n\"dynamicContentMacros\": [{\n   ...\n   \"url\": \"/render-map?pageTitle={page.title}&amp;viewChoice={view}\",\n   ...\n}]\n </code></pre>\n\n <h2>Example</h2>\n\n\n\n\n\n    {\n      \"dynamicContentMacros\": {\n        \"renderModes\": {},\n        \"url\": \"/my-macro\",\n        \"categories\": [],\n        \"outputType\": \"block\",\n        \"bodyType\": \"none\",\n        \"aliases\": [],\n        \"parameters\": [\n          {\n            \"identifier\": \"view\",\n            \"name\": {\n              \"value\": \"Map View\"\n            },\n            \"description\": {\n              \"value\": \"Allows switching between view types\"\n            },\n            \"type\": \"enum\",\n            \"required\": true,\n            \"multiple\": false,\n            \"defaultValue\": \"Map\",\n            \"values\": [\n              \"Map\",\n              \"Satellite\"\n            ],\n            \"hidden\": false,\n            \"indexing\": {\n              \"enabled\": true\n            }\n          }\n        ],\n        \"name\": {\n          \"value\": \"My macro with placeholder\"\n        },\n        \"key\": \"my-macro-key\"\n      }\n    }\n\n\n"
                                },
                                "type": "array",
                                "fieldDescription": "\n\nThe list of parameter input fields that will be displayed.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "url",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:contentBylineItems": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "context": {
                                "enum": [
                                    "page",
                                    "PAGE",
                                    "addon",
                                    "ADDON",
                                    "product",
                                    "PRODUCT"
                                ],
                                "type": "string",
                                "fieldDescription": "\n\nThe context for the URL parameter. Not applicable if an absolute URL is specified. Possible values\n <ul>\n     <li><pre>addon</pre> - a URL relative to the add-on's base URL</li>\n     <li><pre>page</pre> - targets a Page module by specifying the Page's module key as the URL</li>\n     <li><pre>product</pre> - a URL relative to the product's base URL</li>\n </ul>\n\n",
                                "defaultValue": "addon"
                            },
                            "tooltip": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nThe internationalised text to be used in the link's tooltip.\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn optional icon to display with the link text or as the link, specified by URL to its hosted location.\n You can specify a particular width and height for the icon. Most link icons in Atlassian applications\n are 16 by 16 pixels.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "cacheable": {
                                "type": "boolean",
                                "fieldDescription": "\n\nReturns whether the URL should be cacheable. Cacheable URLs are taken directly from the add-on descriptor, and\n lack all additional query parameters:\n <ul>\n     <li>standard iframe query parameters</li>\n     <li>product context parameters</li>\n     <li>JWT token</li>\n </ul>\n\n",
                                "defaultValue": "false"
                            },
                            "conditions": {
                                "items": {
                                    "type": "object",
                                    "anyOf": [
                                        {
                                            "$ref": "#/definitions/compositeCondition"
                                        },
                                        {
                                            "$ref": "#/definitions/singleCondition"
                                        }
                                    ]
                                },
                                "type": "array",
                                "fieldDescription": "\n\n<a href=\"../../conditions/\">Conditions</a> can be added to display only when all the given conditions are true.\n\n"
                            },
                            "params": {
                                "additionalProperties": true,
                                "type": "object",
                                "fieldTitle": "Object",
                                "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                            },
                            "contentPropertyKey": {
                                "pattern": "^[a-zA-Z0-9-]+$",
                                "maxLength": 100,
                                "type": "string",
                                "fieldDescription": "\n\n<p>\n     An optional <a href=\"../../storing-data-without-a-database/#confluence-content-properties\">Content Property</a> key\n     that this Byline Item will be bound to.\n </p>\n\n <p>\n     The key must only contain alphanumeric characters and dashes.\n </p>\n\n <p>\n     When a key is supplied, the:\n </p>\n <ul>\n     <li><a href=\"#name\"><code>name</code></a></li>\n     <li><a href=\"#icon\"><code>icon</code></a> and</li>\n     <li><a href=\"#tooltip\"><code>tooltip</code></a></li>\n </ul>\n <p>\n     for this Byline item will be overwritten with the property's corresponding value (if present), and the rendered item\n     will be updated as the value changes in the browser.\n </p>\n <p>\n     This requires the stored Content Property to have the following format:<br>\n\n\n\n\n\n    {\n      \"name\": {\n        \"value\": \"Item Text\"\n      },\n      \"icon\": {\n        \"width\": 16,\n        \"height\": 16,\n        \"url\": \"/my-icon.png\"\n      },\n      \"tooltip\": {\n        \"value\": \"Item Tooltip\"\n      }\n    }\n\n\n\n </p>\n <p>\n     Note that only fields present in the original bean will be respected when substituting values from a\n     Content Property later. This means that to show a Content-Property-based <code>tooltip</code>, this Content\n     Byline Item module must specify a <code>tooltip</code>. Likewise for a Content-Property-based\n     <code>icon</code>, this module must specify an <code>icon</code>.\n </p>\n\n"
                            },
                            "url": {
                                "type": "string",
                                "fieldDescription": "\n\nSpecifies the destination of the web item. The interpretation of this field depends on the value of the\n <pre>context</pre> field.\n\n <p>\n     This field is required if the <code>target</code> of the item is not a\n     <a href=\"../dialog/\"><code>Dialog Module</code></a>.\n </p>\n\n Your add-on can receive [additional context](../../context-parameters/) from the application by\n using variable tokens in the URL attribute.\n\n"
                            },
                            "target": {
                                "properties": {
                                    "options": {
                                        "type": "object",
                                        "fieldDescription": "\n\n<p>An object containing options which vary based on the type of web item target you are implementing.</p>\n\n <p>Currently-allowed options are:</p>\n <ul>\n     <li><a href=\"../inline-dialog-options/\">Inline Dialog Options</a> when type is \"inlinedialog\", and</li>\n     <li><a href=\"../dialog-options/\">Dialog Options</a> when type is \"dialog\"</li>\n     <li><a href=\"../dialog-module-options/\">Dialog Module Options</a> when type is \"dialogmodule\"</li>\n </ul>\n\n",
                                        "anyOf": [
                                            {
                                                "properties": {
                                                    "offsetX": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the x-axis in pixels\n\n"
                                                    },
                                                    "offsetY": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets an offset distance of the inline-dialog from the trigger element along the y-axis in pixels\n\n"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "onTop": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown above the trigger or not. If this option is true but there is insufficient room above the trigger the inline-dialog will be flipped to display below it\n\n"
                                                    },
                                                    "showDelay": {
                                                        "type": "integer",
                                                        "fieldDescription": "\n\nDetermines how long in milliseconds after a show trigger is fired (such as a trigger click) until the dialog is shown\n\n"
                                                    },
                                                    "closeOthers": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if all other dialogs on the screen are closed when this one is opened\n\n"
                                                    },
                                                    "persistent": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nThis option, ignores the 'closeOthers' option\n\n"
                                                    },
                                                    "onHover": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines whether the inline-Dialog will show on a mouseOver or mouseClick of the trigger\n\n"
                                                    },
                                                    "isRelativeToMouse": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nDetermines if the dialog should be shown relative to where the mouse is at the time of the event trigger (normally a click) if set to false the dialog will show aligned to the left of the trigger with the arrow showing at the center\n\n"
                                                    }
                                                },
                                                "shortClassName": "inlineDialogOptions",
                                                "type": "object",
                                                "title": "Inline Dialog Options",
                                                "description": "\n\nOptions for an inline dialog target\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "key": {
                                                        "maxLength": 100,
                                                        "type": "string",
                                                        "fieldDescription": "\n\n<p>The key of a <a href=\"../dialog/\">Dialog</a> module declared in this Connect add-on.</p>\n\n <p>\n The dialog module will include the <a href=\"../dialog-options/\">Dialog Options</a>\n that would otherwise need to be specified directly in this options object.\n </p>\n\n"
                                                    }
                                                },
                                                "required": [
                                                    "key"
                                                ],
                                                "shortClassName": "dialogModuleOptions",
                                                "type": "object",
                                                "title": "Dialog Module Options",
                                                "description": "\n\nOptions for a web-item targeting a common <a href=\"../dialog/\">dialog module</a>.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n"
                                            },
                                            {
                                                "properties": {
                                                    "size": {
                                                        "enum": [
                                                            "small",
                                                            "SMALL",
                                                            "medium",
                                                            "MEDIUM",
                                                            "large",
                                                            "LARGE",
                                                            "x-large",
                                                            "X-LARGE",
                                                            "fullscreen",
                                                            "FULLSCREEN",
                                                            "maximum",
                                                            "MAXIMUM"
                                                        ],
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n     This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
                                                    },
                                                    "chrome": {
                                                        "type": "boolean",
                                                        "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
                                                        "defaultValue": "true"
                                                    },
                                                    "width": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                                                    },
                                                    "header": {
                                                        "$ref": "#/definitions/i18nProperty",
                                                        "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
                                                    },
                                                    "height": {
                                                        "maxLength": 10,
                                                        "type": "string",
                                                        "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
                                                    }
                                                },
                                                "shortClassName": "dialogOptions",
                                                "type": "object",
                                                "title": "Dialog Options",
                                                "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n     These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dialogs\": [\n          {\n            \"url\": \"/my-dialog-content\",\n            \"options\": {\n              \"size\": \"fullscreen\",\n              \"header\": {\n                \"value\": \"Example Dialog\"\n              }\n            },\n            \"key\": \"dialog-module-key\"\n          }\n        ]\n      }\n    }\n\n\n"
                                            }
                                        ]
                                    },
                                    "type": {
                                        "enum": [
                                            "page",
                                            "PAGE",
                                            "dialog",
                                            "DIALOG",
                                            "inlinedialog",
                                            "INLINEDIALOG",
                                            "dialogmodule",
                                            "DIALOGMODULE"
                                        ],
                                        "type": "string",
                                        "fieldDescription": "\n\nDefines how the web-item content should be loaded by the page. By default, the web-item is loaded in the same\n page. The target can be set to open the web-item url as a modal dialog or an inline dialog.\n\n",
                                        "defaultValue": "page"
                                    }
                                },
                                "shortClassName": "webItemTargetBean",
                                "type": "object",
                                "title": "Web Item Target",
                                "description": "\n\nDefines the way a <a href=\"../web-item/\">web item</a> link is opened in the browser, such as in a modal or inline dialog.\n\n <h2>Inline Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"inlinedialog\",\n        \"options\": {\n          \"onHover\": true,\n          \"offsetX\": \"30px\",\n          \"offsetY\": \"20px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Common Dialog Module Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialogmodule\",\n        \"options\": {\n          \"key\": \"dialog-module-key\"\n        }\n      }\n    }\n\n\n\n\n <p>More details for this use-case can be found on the <a href=\"../dialog/\">Dialog Module</a> page.</p>\n\n",
                                "fieldDescription": "\n\nDefines the behaviour when the item is triggered.\n If omitted, the url behaves as a regular hyperlink.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:confluenceThemes": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "routes": {
                                "properties": {
                                    "spaceview": {
                                        "properties": {
                                            "url": {
                                                "type": "string",
                                                "fieldDescription": "\n\nA url for displaying a given view. This url can be interpolated with a set of variables. See\n <a href=\"../theme-routes/\">Theme Routes</a> for a list of\n context parameters available.\n\n"
                                            }
                                        },
                                        "required": [
                                            "url"
                                        ],
                                        "shortClassName": "confluenceThemeRouteBean",
                                        "type": "object",
                                        "title": "Theme Route Definition",
                                        "description": "\n\nDefines the data required for each individual route.\n\n The <code>url</code> field is a URL that is to be used as an iframe for the full page iframe rendered for the route.\n\n",
                                        "fieldDescription": "\n\nRoute for the space homepage - the screen when a user views a space. Overriding\n this route will allow the add-on to customize what the user sees when they visit a space homepage.\n Available context parameters in the url are\n <ul>\n <li><code>space.key</code> - the space key of the content being viewed</li>\n </ul>\n\n"
                                    }
                                },
                                "shortClassName": "confluenceThemeRouteInterceptionsBean",
                                "type": "object",
                                "title": "Theme Routes",
                                "description": "\n\nDefines each of the routes that the Theme module should override.\n\n The <code>url</code> field of each individual <a href=\"../theme-route-definition/\">route definition</a>\n will be provided with context parameters for the particular route. For example, the <code>spaceview</code> route\n can have as a URL <code>/my-spaceview/{space.key}</code>,\n and the context parameter <code>space.key</code> is going to be replaced with the actual space key of the content being viewed.\n\n The context parameters <code>username</code> and <code>userkey</code> will be removed after GDPR deprecation period ends.\n\n Below is a list of all possible routes, and the context parameters associated with the route.\n\n",
                                "fieldDescription": "\n\nDefines what routes to override for this Theme.\n See <a href=\"../theme-routes/\">Theme Routes</a> for a description of each route,\n as well as the appropriate context parameters available for each route.\n\n"
                            },
                            "lookAndFeel": {
                                "$ref": "#/definitions/lookAndFeel",
                                "fieldDescription": "\n\nThe look and feel for the Theme\n\n"
                            },
                            "icon": {
                                "$ref": "#/definitions/icon",
                                "fieldDescription": "\n\nAn icon to display in the Theme selector in the Confluence administration screen. The icon will be resized to\n 110px wide and 70px high to fit inside the Theme selector.\n\n"
                            },
                            "routeOverride": {
                                "type": "boolean",
                                "fieldDescription": "\n\nA configuration to enable or disable route override. The default is true.\n\n"
                            },
                            "name": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA human readable name.\n\n"
                            },
                            "description": {
                                "$ref": "#/definitions/i18nProperty",
                                "fieldDescription": "\n\nA description for the Theme. This will appear next to the icon in the Theme selector in the Confluence admininstration screen.\n\n"
                            },
                            "availableGlobally": {
                                "type": "boolean",
                                "fieldDescription": "\n\nA configuration to make the theme available to select in global administration. The default is false.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:lifecycle": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "installed": {
                                "type": "string",
                                "fieldDescription": "\n\nWhen a Connect add-on is installed, a synchronous request is fired to this URL to initiate the installation\n handshake. In order to successfully complete installation, the add-on must respond with either a\n <code>200 OK</code> or <code>204 No Content</code> status.\n\n<div class=\"aui-message warning\">\n    <p class=\"title\">\n        <span class=\"aui-icon icon-warning\">Warning</span>\n        <strong>Important</strong>\n    </p>\n    Upon successful registration, the add-on must return either a <code>200 OK</code> or <code>204 No Content</code>\n    response code, otherwise the operation will fail and the installation will be marked as incomplete.\n</div>\n\n"
                            },
                            "disabled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully disabled. This is an asynchronous notification event.\n\n"
                            },
                            "dare-migration": {
                                "type": "string",
                                "fieldDescription": "\n\nUsed DaRe app migration service to trigger migrations events\n\n"
                            },
                            "uninstalled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully un-installed. This is an asynchronous notification event.\n\n"
                            },
                            "enabled": {
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully enabled. This is an asynchronous notification event.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:cloudAppMigration": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "migrationWebhookPath": {
                                "type": "string",
                                "fieldDescription": "\n\nRelative URL path where <a href=\"https://developer.atlassian.com/platform/app-migration/events\">App Migration Webhook events</a> will be sent to.\nThis feature is currently in EAP for Connect on Forge.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:translations": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "paths": {
                                "type": "object",
                                "fieldDescription": "\nA map of locales to URLs of JSON translation files. The URLs may be relative to the Connect base URL or absolute. See <a href=\"https://developer.atlassian.com/cloud/jira/platform/internationalization-for-connect-apps/\">Internationalization for Connect apps</a>.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:action": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "config": {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "config",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:trigger": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "title",
                            "function",
                            "key"
                        ],
                        "additionalProperties": true,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:condition": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "config": {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "config",
                            "key"
                        ],
                        "additionalProperties": true,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:branch": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "config": {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "config",
                            "key"
                        ],
                        "additionalProperties": true,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:attributeResolver": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "key"
                        ],
                        "additionalProperties": true,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:template": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "key"
                        ],
                        "additionalProperties": true,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:i18n": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "resource": {
                                "type": "string"
                            },
                            "supportedLocales": {
                                "additionalProperties": {
                                    "type": "string"
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "supportedLocales",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "automation:actionProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "actions",
                            "key"
                        ],
                        "properties": {
                            "actions": {
                                "description": "A list of actions that will be exposed by the Automation platform.",
                                "type": "array",
                                "minItems": 1,
                                "maxItems": 20,
                                "uniqueItems": true,
                                "items": {
                                    "description": "The key of an action extension in your manifest.",
                                    "maxLength": 255,
                                    "minLength": 1,
                                    "pattern": "^[a-zA-Z0-9-._]+$",
                                    "title": "ActionExtensionKey",
                                    "type": "string"
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "rovo:agent": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "name",
                            "prompt",
                            "key"
                        ],
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "name": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 30
                            },
                            "description": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "prompt": {
                                "type": "string",
                                "minLength": 1
                            },
                            "followUpPrompt": {
                                "type": "string",
                                "minLength": 1
                            },
                            "conversationStarters": {
                                "description": "A list of conversation starters that the agent can use to start a conversation with the user.",
                                "type": "array",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 85
                                }
                            },
                            "actions": {
                                "description": "A list of actions that this agent can access to perform tasks.",
                                "type": "array",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "description": "The key for an action extension in your descriptor / manifest.",
                                    "maxLength": 255,
                                    "minLength": 1,
                                    "pattern": "^[a-zA-Z0-9-._]+$",
                                    "title": "ActionExtensionKey",
                                    "type": "string"
                                }
                            },
                            "skills": {
                                "description": "A list of skills that this agent can access to perform tasks.",
                                "type": "array",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "description": "The key for a rovo:skill module in your descriptor / manifest.",
                                    "minLength": 1,
                                    "pattern": "^[a-zA-Z0-9_-]+$",
                                    "title": "RovoSkillModuleKey",
                                    "type": "string"
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "rovo:agentConnector": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "name",
                            "protocols",
                            "productContexts",
                            "key"
                        ],
                        "properties": {
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "name": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 30
                            },
                            "description": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "conversationStarters": {
                                "<<": {
                                    "description": "A list of conversation starters that the agent can use to start a conversation with the user.",
                                    "type": "array",
                                    "minItems": 1,
                                    "uniqueItems": true,
                                    "items": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 85
                                    }
                                },
                                "maxItems": 3
                            },
                            "extensions": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "uri": {
                                            "type": "string",
                                            "description": "The unique URI identifying the extension."
                                        },
                                        "description": {
                                            "type": "string",
                                            "description": "A human-readable description of how this agent uses the extension."
                                        },
                                        "required": {
                                            "type": "boolean",
                                            "description": "If true, the client must understand and comply with the extension's requirements."
                                        },
                                        "params": {
                                            "type": "object",
                                            "description": "Optional. Extension-specific configuration parameters."
                                        }
                                    }
                                }
                            },
                            "productContexts": {
                                "type": "array",
                                "description": "Declares which Atlassian products the agent is designed to operate within.",
                                "minItems": 1,
                                "uniqueItems": true,
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "jira"
                                    ]
                                }
                            },
                            "protocols": {
                                "description": "Defines how your agent communicates with other agents and systems. It specifies the protocols and transport mechanisms available for interactions with your remote agent.",
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                    "agent2Agent"
                                ],
                                "properties": {
                                    "agent2Agent": {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "required": [
                                            "jsonRpcTransport",
                                            "version"
                                        ],
                                        "properties": {
                                            "version": {
                                                "type": "string",
                                                "title": "version",
                                                "description": "The A2A protocol version this agent implements. Determines the shape of the AgentCard returned by web-triggers and the message format enforced at invocation time. Supported values: '0.3', '1.0'. This field is required. Early EAP apps deployed before this field existed may be exempt via the xls-a2a-legacy-version-exempt feature gate.",
                                                "enum": [
                                                    "0.3",
                                                    "1.0"
                                                ]
                                            },
                                            "jsonRpcTransport": {
                                                "$ref": "#/definitions/protocolEndpoint",
                                                "description": "Enables Agent2Agent protocol over JSON-RPC 2.0 transport."
                                            }
                                        }
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "rovo:skill": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "source",
                            "key"
                        ],
                        "properties": {
                            "source": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                    "dir"
                                ],
                                "properties": {
                                    "dir": {
                                        "type": "string",
                                        "minLength": 1
                                    }
                                }
                            },
                            "dependencies": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                    "tools"
                                ],
                                "properties": {
                                    "tools": {
                                        "description": "A list of actions that this skill depends on to perform tasks.",
                                        "type": "array",
                                        "minItems": 1,
                                        "uniqueItems": true,
                                        "items": {
                                            "description": "The key of an action extension in your manifest.",
                                            "maxLength": 255,
                                            "minLength": 1,
                                            "pattern": "^[a-zA-Z0-9-._]+$",
                                            "title": "ActionExtensionKey",
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "rovo:mcp": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "name",
                            "tools",
                            "key"
                        ],
                        "properties": {
                            "name": {
                                "description": "The human-readable name of the MCP server.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 30
                            },
                            "tools": {
                                "description": "A list of actions that will be exposed by the MCP server.",
                                "type": "array",
                                "minItems": 1,
                                "maxItems": 20,
                                "uniqueItems": true,
                                "items": {
                                    "description": "The key of an action extension in your manifest.",
                                    "maxLength": 64,
                                    "minLength": 1,
                                    "pattern": "^[a-zA-Z0-9-._]+$",
                                    "title": "ActionExtensionKey",
                                    "type": "string"
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "graph:smartLink": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "The name to display as App in Smart Link."
                            },
                            "icon": {
                                "type": "string",
                                "description": "icon to use for Smart Links"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "The key of the function that should be invoked for resolving URL to Smart Link.",
                                "pattern": "^[a-zA-Z0-9-._]+$"
                            },
                            "domains": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "minItems": 1,
                                "maxItems": 10,
                                "description": "The domains that this object provider should match.",
                                "title": "domains"
                            },
                            "subdomains": {
                                "type": "boolean",
                                "title": "subdomain",
                                "description": "Should sub-domains be allowed."
                            },
                            "patterns": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "minItems": 1,
                                "maxItems": 20,
                                "description": "Patterns used for matching URLs that are resolvable to entities.",
                                "title": "patterns"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "icon",
                            "function",
                            "domains",
                            "patterns",
                            "key"
                        ],
                        "additionalProperties": false,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "graph:connector": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "The name of the connector."
                            },
                            "icons": {
                                "type": "object",
                                "properties": {
                                    "light": {
                                        "type": "string",
                                        "description": "The icon for the connector when in Light mode."
                                    },
                                    "dark": {
                                        "type": "string",
                                        "description": "The icon for the connector when in Dark mode."
                                    }
                                },
                                "required": [
                                    "light",
                                    "dark"
                                ]
                            },
                            "documentationLink": {
                                "type": "string",
                                "format": "uri",
                                "pattern": "^https://",
                                "description": "The link to the documentation of the vendor."
                            },
                            "objectTypes": {
                                "type": "array",
                                "description": "Objects that the connector can provide.",
                                "minItems": 1,
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "atlassian:document",
                                        "atlassian:branch",
                                        "atlassian:build",
                                        "atlassian:calendar-event",
                                        "atlassian:conversation",
                                        "atlassian:deal",
                                        "atlassian:deployment",
                                        "atlassian:design",
                                        "atlassian:message",
                                        "atlassian:customer-org",
                                        "atlassian:customer-org-category",
                                        "atlassian:space",
                                        "atlassian:project",
                                        "atlassian:remote-link",
                                        "atlassian:comment",
                                        "atlassian:repository",
                                        "atlassian:commit",
                                        "atlassian:pull-request",
                                        "atlassian:video",
                                        "atlassian:work-item",
                                        "atlassian:dashboard",
                                        "atlassian:software-service",
                                        "atlassian:feature-flag",
                                        "atlassian:test",
                                        "atlassian:test-execution",
                                        "atlassian:test-plan",
                                        "atlassian:test-run",
                                        "atlassian:test-status"
                                    ],
                                    "minLength": 1,
                                    "maxLength": 255
                                }
                            },
                            "orchestration": {
                                "type": "object",
                                "properties": {
                                    "taskRunner": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "$ref": "#/definitions/ExtensionKey",
                                                "description": "The key of the function that the Orchestrator will invoke to execute a Task. When using Task Management.",
                                                "title": "taskRunner"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ],
                                        "additionalProperties": false
                                    }
                                },
                                "required": [
                                    "taskRunner"
                                ],
                                "additionalProperties": false
                            },
                            "auth": {
                                "type": "object",
                                "properties": {
                                    "provider": {
                                        "$ref": "#/definitions/ExternalAuthProvider",
                                        "description": "A key referencing authentication provider. This will be utilised to authenticate end-users and match with external users.",
                                        "title": "User Auth Provider"
                                    }
                                },
                                "additionalProperties": false
                            },
                            "datasource": {
                                "type": "object",
                                "properties": {
                                    "formConfiguration": {
                                        "type": "object",
                                        "properties": {
                                            "form": {
                                                "type": "array",
                                                "minItems": 1,
                                                "maxItems": 5,
                                                "items": {
                                                    "$ref": "#/definitions/FormSection"
                                                },
                                                "description": "Form properties to capture from Admin user (rendered in order)."
                                            },
                                            "instructions": {
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "minItems": 1,
                                                "maxItems": 10,
                                                "description": "Instructions displayed to the admin at the top of the form.",
                                                "title": "instructions"
                                            },
                                            "validateConnection": {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "$ref": "#/definitions/ExtensionKey",
                                                        "description": "The key of the function that should be invoked on connection creation to validate configuration captured in the form.",
                                                        "title": "validateConnection"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        },
                                        "additionalProperties": false,
                                        "required": [
                                            "form",
                                            "validateConnection"
                                        ]
                                    },
                                    "onConnectionChange": {
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "$ref": "#/definitions/ExtensionKey",
                                                "description": "The key of the function that should be invoked on connection change (Created, updated, deleted).",
                                                "title": "onConnectionChange"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    }
                                },
                                "required": [
                                    "onConnectionChange"
                                ],
                                "additionalProperties": false
                            },
                            "capabilities": {
                                "type": "object",
                                "description": "Capabilities supported by the connector. Expected for new connectors but optional in the schema for backward compatibility.",
                                "properties": {
                                    "replicatesPermissions": {
                                        "type": "boolean",
                                        "description": "Whether the connector replicates source access controls."
                                    },
                                    "syncFidelity": {
                                        "type": "string",
                                        "enum": [
                                            "append",
                                            "upsert",
                                            "mirror"
                                        ],
                                        "description": "How faithfully the connector tracks the source. append: creates entities only (one-time or append-only import). upsert: creates and updates entities on an ongoing basis. mirror: creates, updates, and deletes entities to fully mirror the source."
                                    },
                                    "supportsIncrementalSync": {
                                        "type": "boolean",
                                        "description": "Whether the connector supports delta sync (only changed items) rather than requiring a full re-sync."
                                    }
                                },
                                "additionalProperties": false
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "icons",
                            "objectTypes",
                            "datasource",
                            "key"
                        ],
                        "additionalProperties": false,
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:buildInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:deploymentInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "actions": {
                                "type": "object",
                                "properties": {
                                    "listDeployments": {
                                        "type": "object",
                                        "properties": {
                                            "urlTemplate": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^(http|https):\\/\\/.*$"
                                            }
                                        },
                                        "required": [
                                            "urlTemplate"
                                        ]
                                    }
                                }
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:designInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "handledDomainName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "checkAuth": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "getEntityByUrl": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "onEntityAssociated": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "onEntityDisassociated": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "checkAuth",
                            "getEntityByUrl",
                            "onEntityAssociated",
                            "onEntityDisassociated",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:featureFlagInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "actions": {
                                "type": "object",
                                "properties": {
                                    "createFlag": {
                                        "type": "object",
                                        "properties": {
                                            "urlTemplate": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^(http|https):\\/\\/.*$"
                                            }
                                        },
                                        "required": [
                                            "urlTemplate"
                                        ]
                                    },
                                    "linkFlag": {
                                        "type": "object",
                                        "properties": {
                                            "urlTemplate": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^(http|https):\\/\\/.*$"
                                            }
                                        },
                                        "required": [
                                            "urlTemplate"
                                        ]
                                    },
                                    "listFlag": {
                                        "type": "object",
                                        "properties": {
                                            "urlTemplate": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^(http|https):\\/\\/.*$"
                                            }
                                        },
                                        "required": [
                                            "urlTemplate"
                                        ]
                                    }
                                }
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:developmentInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "actions": {
                                "type": "object",
                                "properties": {
                                    "createBranch": {
                                        "type": "object",
                                        "properties": {
                                            "urlTemplate": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^(http|https):\\/\\/.*$"
                                            }
                                        },
                                        "required": [
                                            "urlTemplate"
                                        ]
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:securityInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "fetchWorkspaces": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "fetchContainers": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "searchContainers": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "onEntityAssociated": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "onEntityDisassociated": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "endpoint": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "endpoint"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "fetchWorkspaces",
                            "fetchContainers",
                            "searchContainers",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "devops:remoteLinkInfoProvider": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                },
                                "required": [
                                    "value"
                                ]
                            },
                            "homeUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "logoUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\\\\\?([^#]*))?(#(.*))?"
                            },
                            "documentationUrl": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^(http|https):\\/\\/.*$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "name",
                            "homeUrl",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "global:ui": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "title": {
                                "oneOf": [
                                    {
                                        "type": "object",
                                        "additionalProperties": false,
                                        "properties": {
                                            "i18n": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 300,
                                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                            }
                                        },
                                        "required": [
                                            "i18n"
                                        ]
                                    },
                                    {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    }
                                ]
                            },
                            "title__i18n": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300,
                                "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                            },
                            "icon": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resource": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 47,
                                "pattern": "^[a-zA-Z0-9_\\-]{1,23}(/[a-zA-Z0-9_\\-]{1,23})?$"
                            },
                            "resolvedResourceEntry": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64,
                                "pattern": "^[a-zA-Z0-9._-]+$"
                            },
                            "resourceUploadId": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                            },
                            "resolver": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "endpoint": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "endpoint"
                                        ]
                                    }
                                ]
                            },
                            "render": {
                                "enum": [
                                    "native"
                                ],
                                "type": "string"
                            },
                            "renderRuntimeType": {
                                "enum": [
                                    "webworker",
                                    "iframe"
                                ],
                                "type": "string",
                                "default": "iframe"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "render",
                            "key"
                        ]
                    },
                    "minItems": 1
                },
                "global:fullPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\\\-]{1,23}(/[a-zA-Z0-9_\\\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "routePrefix",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "additionalProperties": false,
                                                "properties": {
                                                    "i18n": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 300,
                                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                                    }
                                                },
                                                "required": [
                                                    "i18n"
                                                ]
                                            },
                                            {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255
                                            }
                                        ]
                                    },
                                    "title__i18n": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 300,
                                        "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
                                    },
                                    "resolver": {
                                        "anyOf": [
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            },
                                            {
                                                "additionalProperties": false,
                                                "type": "object",
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "endpoint"
                                                ]
                                            }
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 47,
                                        "pattern": "^[a-zA-Z0-9_\\\\-]{1,23}(/[a-zA-Z0-9_\\\\-]{1,23})?$"
                                    },
                                    "resolvedResourceEntry": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "pattern": "^[a-zA-Z0-9._-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "renderRuntimeType": {
                                        "enum": [
                                            "webworker",
                                            "iframe"
                                        ],
                                        "type": "string",
                                        "default": "iframe"
                                    },
                                    "routePrefix": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-z0-9\\\\-]+$"
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "unlicensedAccess": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "unlicensed",
                                                "anonymous"
                                            ]
                                        }
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "resource",
                                    "routePrefix",
                                    "render",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                }
            },
            "title": "ModuleSchema",
            "type": "object"
        },
        "BearerMethodSchema": {
            "oneOf": [
                {
                    "type": "string",
                    "enum": [
                        "authorization-header",
                        "form-encoded",
                        "uri-query"
                    ]
                },
                {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                        "type"
                    ],
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "authorization-header",
                                "form-encoded",
                                "uri-query"
                            ]
                        },
                        "prefix": {
                            "type": "string",
                            "description": "Custom authorization header prefix",
                            "maxLength": 1000
                        },
                        "parameter": {
                            "type": "string",
                            "description": "Custom Header name or Parameter name (depending on type)",
                            "maxlength": 1000
                        }
                    }
                }
            ]
        },
        "ModuleKeySchema": {
            "type": "string",
            "title": "ModuleKeySchema",
            "description": "A key for the module. Must be unique within the manifest.",
            "pattern": "^[a-zA-Z0-9_-]+$"
        },
        "AppPermissionsSchema": {
            "additionalProperties": false,
            "type": "object",
            "title": "AppPermissionsSchema",
            "properties": {
                "enforcement": {
                    "description": "App permissions enforcement method",
                    "title": "enforcement",
                    "type": "string",
                    "enum": [
                        "app-managed"
                    ]
                },
                "scopes": {
                    "title": "scopes",
                    "oneOf": [
                        {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        {
                            "description": "This method for declaring scopes is not yet supported",
                            "type": "object",
                            "additionalProperties": {
                                "type": "object",
                                "properties": {
                                    "allowImpersonation": {
                                        "type": "boolean",
                                        "description": "This scope property is not yet supported"
                                    }
                                },
                                "additionalProperties": false
                            }
                        }
                    ]
                },
                "content": {
                    "additionalProperties": false,
                    "type": "object",
                    "title": "content",
                    "properties": {
                        "scripts": {
                            "items": {
                                "maxLength": 128,
                                "type": "string"
                            },
                            "title": "scripts",
                            "type": "array",
                            "minItems": 0
                        },
                        "styles": {
                            "items": {
                                "enum": [
                                    "unsafe-inline"
                                ]
                            },
                            "title": "styles",
                            "type": "array",
                            "minItems": 0
                        }
                    }
                },
                "external": {
                    "additionalProperties": false,
                    "type": "object",
                    "title": "external",
                    "properties": {
                        "fetch": {
                            "additionalProperties": false,
                            "type": "object",
                            "title": "fetch",
                            "properties": {
                                "backend": {
                                    "items": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "maxLength": 1000
                                            },
                                            {
                                                "$ref": "#/definitions/EgressPermission"
                                            },
                                            {
                                                "type": "object",
                                                "description": "References a Remote",
                                                "title": "remote",
                                                "properties": {
                                                    "remote": {
                                                        "type": "string",
                                                        "maxLength": 1000
                                                    }
                                                },
                                                "required": [
                                                    "remote"
                                                ],
                                                "additionalProperties": false
                                            }
                                        ]
                                    },
                                    "title": "backend",
                                    "type": "array",
                                    "minItems": 0
                                },
                                "client": {
                                    "items": {
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "maxLength": 1000
                                            },
                                            {
                                                "$ref": "#/definitions/EgressPermission"
                                            },
                                            {
                                                "type": "object",
                                                "description": "References a Remote",
                                                "title": "remote",
                                                "properties": {
                                                    "remote": {
                                                        "type": "string",
                                                        "maxLength": 1000
                                                    }
                                                },
                                                "required": [
                                                    "remote"
                                                ],
                                                "additionalProperties": false
                                            }
                                        ]
                                    },
                                    "title": "client",
                                    "type": "array",
                                    "minItems": 0
                                }
                            }
                        },
                        "fonts": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "fonts",
                            "type": "array",
                            "minItems": 0
                        },
                        "frames": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "frames",
                            "type": "array",
                            "minItems": 0
                        },
                        "navigation": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "navigation",
                            "type": "array",
                            "minItems": 0
                        },
                        "images": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "images",
                            "type": "array",
                            "minItems": 0
                        },
                        "media": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "media",
                            "type": "array",
                            "minItems": 0
                        },
                        "scripts": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "scripts",
                            "type": "array",
                            "minItems": 0
                        },
                        "styles": {
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    {
                                        "$ref": "#/definitions/EgressPermission"
                                    }
                                ]
                            },
                            "title": "styles",
                            "type": "array",
                            "minItems": 0
                        },
                        "configurable": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                                "enabled"
                            ],
                            "properties": {
                                "enabled": {
                                    "type": "boolean"
                                }
                            }
                        }
                    }
                },
                "sandbox": {
                    "type": "array",
                    "title": "sandbox",
                    "description": "Additional sandbox permissions to grant the app iframe, corresponding to HTML iframe sandbox attribute tokens.",
                    "items": {
                        "type": "string",
                        "enum": [
                            "allow-storage-access-by-user-activation"
                        ]
                    },
                    "minItems": 0
                }
            }
        },
        "HostedResourcesSchema": {
            "type": "array",
            "items": {
                "type": "object",
                "title": "HostedResourcesSchema",
                "required": [
                    "key",
                    "path"
                ],
                "additionalProperties": false,
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "A key for the resource, which other modules can refer to. Must be unique within the manifest and have a maximum of 23 characters.",
                        "pattern": "^[a-zA-Z0-9_-]+$",
                        "maxLength": 23
                    },
                    "path": {
                        "type": "string"
                    },
                    "bundler": {
                        "type": "string",
                        "enum": [
                            "manual@2026"
                        ],
                        "description": "For UI Kit resources only. When set, the CLI treats the resource path as already-built output."
                    },
                    "entry": {
                        "type": "object",
                        "minProperties": 1,
                        "maxProperties": 50,
                        "propertyNames": {
                            "pattern": "^[a-zA-Z0-9_-]+$",
                            "maxLength": 23
                        },
                        "additionalProperties": {
                            "type": "string",
                            "pattern": "^[a-zA-Z0-9_-]+(?:\\.[a-zA-Z0-9_-]+)*$"
                        }
                    },
                    "tunnel": {
                        "type": "object",
                        "required": [
                            "port"
                        ],
                        "properties": {
                            "port": {
                                "type": "number"
                            }
                        },
                        "additionalProperties": false
                    }
                }
            }
        },
        "RemoteBaseUrlSchema": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "object",
                    "propertyNames": {
                        "enum": [
                            "EU",
                            "US",
                            "AU",
                            "DE",
                            "SG",
                            "CA",
                            "IN",
                            "KR",
                            "JP",
                            "GB",
                            "CH",
                            "default"
                        ]
                    },
                    "patternProperties": {
                        ".+": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "required": [
                        "default"
                    ]
                }
            ]
        },
        "RemoteKeySchema": {
            "type": "string",
            "description": "A key for the remote, which other modules can refer to. Must be unique within the manifest and have a maximum of 23 characters.",
            "pattern": "^[a-zA-Z0-9_-]+$",
            "maxLength": 23
        },
        "RemoteOperationsSchema": {
            "description": "The type of operations done in the remote",
            "type": "array",
            "items": {
                "type": "string",
                "enum": [
                    "storage",
                    "other",
                    "compute",
                    "fetch"
                ]
            },
            "minItems": 1
        },
        "RemoteAuthSchema": {
            "description": "Whether the remote should be provided with tokens to use as-app and / or as-user authentication to make requests to Atlassian APIs",
            "type": "object",
            "properties": {
                "appSystemToken": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean"
                        }
                    },
                    "required": [
                        "enabled"
                    ],
                    "additionalProperties": false
                },
                "appUserToken": {
                    "type": "object",
                    "properties": {
                        "enabled": {
                            "type": "boolean"
                        }
                    },
                    "required": [
                        "enabled"
                    ],
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "RemoteStorageSchema": {
            "description": "Options related to remote storage",
            "type": "object",
            "required": [
                "inScopeEUD"
            ],
            "additionalProperties": false,
            "properties": {
                "inScopeEUD": {
                    "description": "Whether it is storing in scope End User Data",
                    "type": "boolean"
                }
            }
        },
        "RemoteConfigurableSchema": {
            "description": "A remote that an admin can configure",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "description": "The name that an admin will see when they're configuring the remote",
                    "type": "string"
                },
                "description": {
                    "description": "The description that an admin will see when they're configuring the remote",
                    "type": "string"
                },
                "supportedPatterns": {
                    "description": "The domains that are supported for this remote, prefixed with a * wildcard. For example, `*.atlassian.net` would allow this remote to communicate with domains that matched this.",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "string"
                    }
                }
            },
            "required": [
                "name",
                "description"
            ]
        },
        "StaticRemoteSchema": {
            "type": "object",
            "title": "StaticRemote",
            "required": [
                "key",
                "baseUrl"
            ],
            "additionalProperties": false,
            "properties": {
                "key": {
                    "$ref": "#/definitions/RemoteKeySchema"
                },
                "baseUrl": {
                    "$ref": "#/definitions/RemoteBaseUrlSchema"
                },
                "operations": {
                    "$ref": "#/definitions/RemoteOperationsSchema"
                },
                "auth": {
                    "$ref": "#/definitions/RemoteAuthSchema"
                },
                "storage": {
                    "$ref": "#/definitions/RemoteStorageSchema"
                }
            }
        },
        "ConfigurableRemoteSchema": {
            "type": "object",
            "title": "ConfigurableRemoteSchema",
            "required": [
                "key",
                "configurable"
            ],
            "additionalProperties": false,
            "properties": {
                "key": {
                    "$ref": "#/definitions/RemoteKeySchema"
                },
                "baseUrl": {
                    "$ref": "#/definitions/RemoteBaseUrlSchema"
                },
                "operations": {
                    "$ref": "#/definitions/RemoteOperationsSchema"
                },
                "auth": {
                    "$ref": "#/definitions/RemoteAuthSchema"
                },
                "storage": {
                    "$ref": "#/definitions/RemoteStorageSchema"
                },
                "configurable": {
                    "$ref": "#/definitions/RemoteConfigurableSchema"
                }
            }
        },
        "RemotesSchema": {
            "type": "array",
            "title": "RemotesSchema",
            "items": {
                "type": "object",
                "title": "RemotesSchema",
                "required": [
                    "key"
                ],
                "additionalProperties": false,
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "A key for the remote, which other modules can refer to. Must be unique within the manifest and have a maximum of 23 characters.",
                        "pattern": "^[a-zA-Z0-9_-]+$",
                        "maxLength": 23
                    },
                    "baseUrl": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "object",
                                "propertyNames": {
                                    "enum": [
                                        "EU",
                                        "US",
                                        "AU",
                                        "DE",
                                        "SG",
                                        "CA",
                                        "IN",
                                        "KR",
                                        "JP",
                                        "GB",
                                        "CH",
                                        "default"
                                    ]
                                },
                                "patternProperties": {
                                    ".+": {
                                        "type": "string",
                                        "minLength": 1
                                    }
                                },
                                "required": [
                                    "default"
                                ]
                            }
                        ]
                    },
                    "operations": {
                        "description": "The type of operations done in the remote",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "enum": [
                                "storage",
                                "other",
                                "compute",
                                "fetch"
                            ]
                        },
                        "minItems": 1
                    },
                    "auth": {
                        "description": "Whether the remote should be provided with tokens to use as-app and / or as-user authentication to make requests to Atlassian APIs",
                        "type": "object",
                        "properties": {
                            "appSystemToken": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ],
                                "additionalProperties": false
                            },
                            "appUserToken": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ],
                                "additionalProperties": false
                            }
                        },
                        "additionalProperties": false
                    },
                    "storage": {
                        "description": "Options related to remote storage",
                        "type": "object",
                        "required": [
                            "inScopeEUD"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "inScopeEUD": {
                                "description": "Whether it is storing in scope End User Data",
                                "type": "boolean"
                            }
                        }
                    },
                    "configurable": {
                        "description": "A remote that an admin can configure",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "description": "The name that an admin will see when they're configuring the remote",
                                "type": "string"
                            },
                            "description": {
                                "description": "The description that an admin will see when they're configuring the remote",
                                "type": "string"
                            },
                            "supportedPatterns": {
                                "description": "The domains that are supported for this remote, prefixed with a * wildcard. For example, `*.atlassian.net` would allow this remote to communicate with domains that matched this.",
                                "type": "array",
                                "minItems": 1,
                                "items": {
                                    "type": "string"
                                }
                            }
                        },
                        "required": [
                            "name",
                            "description"
                        ]
                    }
                }
            }
        },
        "ForgeSupportedLocaleCode": {
            "title": "ForgeSupportedLocaleCode",
            "description": "Supported language locale codes",
            "enum": [
                "zh-CN",
                "zh-TW",
                "cs-CZ",
                "da-DK",
                "nl-NL",
                "en-US",
                "en-GB",
                "et-EE",
                "fi-FI",
                "fr-FR",
                "de-DE",
                "hu-HU",
                "is-IS",
                "it-IT",
                "ja-JP",
                "ko-KR",
                "no-NO",
                "pl-PL",
                "pt-BR",
                "pt-PT",
                "ro-RO",
                "ru-RU",
                "sk-SK",
                "tr-TR",
                "es-ES",
                "sv-SE"
            ]
        },
        "TranslationsSchema": {
            "type": "object",
            "title": "TranslationsSchema",
            "required": [
                "resources",
                "fallback"
            ],
            "additionalProperties": false,
            "properties": {
                "resources": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "title": "TranslationsResources",
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "key",
                            "path"
                        ],
                        "properties": {
                            "key": {
                                "description": "Language locale code",
                                "type": "string",
                                "$ref": "#/definitions/ForgeSupportedLocaleCode"
                            },
                            "path": {
                                "description": "Path to locale file",
                                "type": "string"
                            }
                        }
                    }
                },
                "fallback": {
                    "type": "object",
                    "title": "TranslationsFallback",
                    "tsType": "{\n [key in ForgeSupportedLocaleCode]?: ForgeSupportedLocaleCode[];\n} & {\n  default: ForgeSupportedLocaleCode;\n};",
                    "required": [
                        "default"
                    ],
                    "additionalProperties": false,
                    "propertyNames": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/ForgeSupportedLocaleCode"
                            },
                            {
                                "enum": [
                                    "default"
                                ]
                            }
                        ]
                    },
                    "patternProperties": {
                        "default": {
                            "description": "Default fallback language",
                            "type": "string",
                            "$ref": "#/definitions/ForgeSupportedLocaleCode"
                        },
                        "^[a-z]{2}-[A-Z]{2}$": {
                            "title": "FallbackLanguages",
                            "description": "Fallback languages",
                            "type": "array",
                            "minItems": 1,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "$ref": "#/definitions/ForgeSupportedLocaleCode"
                            }
                        }
                    }
                }
            }
        },
        "ProvidersSchema": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "auth"
            ],
            "properties": {
                "auth": {
                    "type": "array",
                    "title": "auth",
                    "description": "External authentication providers",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/AuthProviderCustom",
                                "title": "AuthProviderCustom"
                            },
                            {
                                "$ref": "#/definitions/AuthProviderPredefined",
                                "title": "AuthProviderPredefined"
                            }
                        ]
                    }
                }
            }
        },
        "EnvironmentSchema": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "variables": {
                    "type": "array",
                    "title": "variables",
                    "description": "Manifest environment variables",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/EnvVarString",
                                "title": "EnvVarString"
                            },
                            {
                                "$ref": "#/definitions/EnvVarObject",
                                "title": "EnvVarObject"
                            }
                        ]
                    }
                }
            }
        },
        "ContainerHealthSchema": {
            "type": "object",
            "required": [
                "type",
                "route"
            ],
            "additionalProperties": false,
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "http"
                    ]
                },
                "route": {
                    "type": "object",
                    "required": [
                        "path"
                    ],
                    "additionalProperties": false,
                    "properties": {
                        "path": {
                            "type": "string",
                            "description": "The path to the health check endpoint",
                            "pattern": "^((/[a-zA-Z0-9-_]+)+|/)$"
                        }
                    }
                }
            }
        },
        "ContainerCpuResourceSchema": {
            "type": "string",
            "pattern": "^([0-9]+m|[0-9]+(\\.[0-9]+)?)$"
        },
        "ContainerMemoryResourceSchema": {
            "type": "string",
            "pattern": "^[0-9]+[GM]i$"
        },
        "ContainerResourcesSchema": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "cpu",
                "memory"
            ],
            "properties": {
                "cpu": {
                    "$ref": "#/definitions/ContainerCpuResourceSchema",
                    "description": "The reserved amount of CPU for the container"
                },
                "memory": {
                    "$ref": "#/definitions/ContainerMemoryResourceSchema",
                    "description": "The reserved amount of memory for the container"
                }
            }
        },
        "ContainerTunnelSchema": {
            "type": "object",
            "required": [
                "docker"
            ],
            "additionalProperties": false,
            "properties": {
                "docker": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "build": {
                            "type": "object",
                            "required": [
                                "context",
                                "dockerfile"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "context": {
                                    "type": "string",
                                    "description": "Path to the build context directory. This is where docker will look for the Dockerfile and any other files referenced in the Dockerfile"
                                },
                                "dockerfile": {
                                    "type": "string",
                                    "description": "The name of the Dockerfile that should be used to build the image. This is relative to the context path"
                                }
                            }
                        },
                        "image": {
                            "type": "string",
                            "description": "The name of the image to build"
                        },
                        "ports": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "pattern": "^[0-9]+:[0-9]+$"
                            },
                            "description": "The port mappings for the container. Traffic directed to the host (left) port will be forwarded to the container (right) port"
                        },
                        "environment": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*=.+$"
                            },
                            "description": "The custom environment variables available to the running processes in the container"
                        },
                        "working_dir": {
                            "type": "string",
                            "description": "The working directory for commands to run in. This will override the default WORKDIR specified in the Dockerfile"
                        },
                        "command": {
                            "oneOf": [
                                {
                                    "type": "string",
                                    "description": "The command to run in the container as a single string"
                                },
                                {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    },
                                    "description": "The command to run in the container as an array of strings"
                                }
                            ],
                            "description": "The command to run in the container. This will override the default CMD specified in the Dockerfile"
                        },
                        "develop": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "watch": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "required": [
                                            "path",
                                            "action"
                                        ],
                                        "additionalProperties": false,
                                        "properties": {
                                            "path": {
                                                "type": "string",
                                                "description": "The path to source code (relative to the project directory) to monitor for changes"
                                            },
                                            "target": {
                                                "type": "string",
                                                "description": "The destination path inside the container where source file changes should be synced to. This attribute is only required when the action is set to sync."
                                            },
                                            "action": {
                                                "type": "string",
                                                "enum": [
                                                    "sync",
                                                    "rebuild",
                                                    "restart",
                                                    "sync+restart"
                                                ],
                                                "description": "The possible actions to take when changes are detected. Refer to official docker documentation for more details on each action"
                                            },
                                            "ignore": {
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "description": "A list of paths or patterns to ignore when watching for changes"
                                            },
                                            "include": {
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "description": "A list of paths or patterns to specifically include when watching for changes"
                                            }
                                        }
                                    },
                                    "description": "A list of rules that control automatic service updates based on local file changes"
                                }
                            },
                            "description": "A section of config which groups development-specific features together"
                        },
                        "volumes": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "pattern": "^[^:]+:[^:]+(:ro|:rw)?$"
                            },
                            "description": "Volumes define mount points that are accessible by service containers. The format is 'source:container_path[:mode]' where mode is optional and can be 'ro' (read-only) or by default 'rw' (read-write)"
                        }
                    }
                }
            }
        },
        "ServiceScalingSchema": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "min": {
                    "type": "number",
                    "description": "The minimum number of instances to run",
                    "minimum": 0
                },
                "max": {
                    "type": "number",
                    "description": "The maximum number of instances to run",
                    "minimum": 1
                }
            }
        },
        "ContainersSchema": {
            "type": "array",
            "uniqueItems": true,
            "items": {
                "type": "object",
                "required": [
                    "key",
                    "tag",
                    "health",
                    "resources"
                ],
                "additionalProperties": false,
                "properties": {
                    "key": {
                        "type": "string",
                        "maxLength": 25,
                        "minLength": 1,
                        "pattern": "^[a-z]([a-z0-9-]{0,23}[a-z0-9])?$"
                    },
                    "tag": {
                        "type": "string",
                        "maxLength": 127,
                        "minLength": 1,
                        "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9-_.]{0,125}[a-zA-Z0-9])?$"
                    },
                    "health": {
                        "$ref": "#/definitions/ContainerHealthSchema",
                        "title": "health"
                    },
                    "resources": {
                        "$ref": "#/definitions/ContainerResourcesSchema",
                        "title": "resources"
                    },
                    "tunnel": {
                        "$ref": "#/definitions/ContainerTunnelSchema",
                        "title": "ContainerTunnelConfig"
                    }
                }
            }
        },
        "ServiceTunnelSchema": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "port"
            ],
            "properties": {
                "port": {
                    "type": "number",
                    "description": "The port of the service where tunnel requests should be sent"
                }
            }
        },
        "ServicesSchema": {
            "type": "array",
            "additionalProperties": false,
            "uniqueItems": true,
            "items": {
                "type": "object",
                "required": [
                    "key",
                    "containers"
                ],
                "additionalProperties": false,
                "properties": {
                    "key": {
                        "type": "string",
                        "maxLength": 25,
                        "minLength": 1,
                        "pattern": "^[a-z]([a-z0-9-]{0,23}[a-z0-9])?$"
                    },
                    "containers": {
                        "$ref": "#/definitions/ContainersSchema",
                        "title": "containers"
                    },
                    "scaling": {
                        "$ref": "#/definitions/ServiceScalingSchema",
                        "title": "scaling"
                    },
                    "tunnel": {
                        "$ref": "#/definitions/ServiceTunnelSchema",
                        "title": "ServiceTunnelConfig"
                    }
                }
            }
        },
        "ManifestOverridesSchema": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "applyTo",
                    "value"
                ],
                "properties": {
                    "applyTo": {
                        "type": "object",
                        "additionalProperties": false,
                        "minProperties": 1,
                        "properties": {
                            "environmentTypes": {
                                "type": "array",
                                "minItems": 1,
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "DEVELOPMENT",
                                        "STAGING",
                                        "PRODUCTION"
                                    ]
                                }
                            },
                            "placements": {
                                "type": "array",
                                "minItems": 1,
                                "items": {
                                    "type": "string",
                                    "maxLength": 32,
                                    "pattern": "^[a-zA-Z0-9_:-]+$"
                                }
                            }
                        }
                    },
                    "value": {
                        "type": "object",
                        "additionalProperties": false,
                        "minProperties": 1,
                        "properties": {
                            "services": {
                                "$ref": "#/definitions/ServicesSchema",
                                "title": "OverriddenServices"
                            }
                        }
                    }
                }
            }
        },
        "OAuth2ScopeName": {
            "type": "string",
            "pattern": "^[^\\s]+$"
        },
        "EgressPermission": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "address"
            ],
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The URL for external egress",
                    "maxLength": 1000
                },
                "category": {
                    "type": "string",
                    "description": "The category of egress, e.g. analytics",
                    "enum": [
                        "analytics"
                    ]
                },
                "inScopeEUD": {
                    "type": "boolean",
                    "description": "Weather or not any user data is in egressed via this address"
                }
            }
        },
        "EnvVarString": {
            "type": "string",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
            "description": "An environment variable name, which can be used in the manifest"
        },
        "EnvVarObject": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "key",
                "default"
            ],
            "properties": {
                "key": {
                    "$ref": "#/definitions/EnvVarString",
                    "description": "The name of the environment variable"
                },
                "default": {
                    "type": "string",
                    "description": "The default value of the environment variable"
                }
            }
        },
        "AuthProviderPredefined": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "key",
                "name",
                "integration",
                "bearerMethod",
                "clientId",
                "remotes"
            ],
            "properties": {
                "key": {
                    "$ref": "#/definitions/ModuleKeySchema"
                },
                "name": {
                    "type": "string",
                    "description": "Name shown to end users",
                    "maxLength": 1000
                },
                "integration": {
                    "type": "string",
                    "enum": [
                        "adobe",
                        "azuredevops",
                        "dropbox",
                        "google",
                        "miro"
                    ],
                    "description": "Pre-defined integration name"
                },
                "bearerMethod": {
                    "$ref": "#/definitions/BearerMethodSchema"
                },
                "clientId": {
                    "type": "string",
                    "maxLength": 1000
                },
                "pkce": {
                    "type": "boolean",
                    "const": true,
                    "description": "Optional flag to enable PKCE as an authentication flow; when provided it must be true"
                },
                "scopes": {
                    "type": "array",
                    "minItems": 0,
                    "items": {
                        "$ref": "#/definitions/OAuth2ScopeName"
                    }
                },
                "remotes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ModuleKeySchema"
                    }
                }
            }
        },
        "AuthProviderCustom": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "key",
                "type",
                "name",
                "bearerMethod",
                "clientId",
                "actions"
            ],
            "properties": {
                "key": {
                    "$ref": "#/definitions/ModuleKeySchema"
                },
                "name": {
                    "type": "string",
                    "description": "Name shown to end users",
                    "maxLength": 1000
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "bearerMethod": {
                    "$ref": "#/definitions/BearerMethodSchema"
                },
                "clientId": {
                    "type": "string",
                    "maxLength": 1000
                },
                "pkce": {
                    "type": "boolean",
                    "const": true,
                    "description": "Optional flag to enable PKCE as an authentication flow; when provided it must be true"
                },
                "scopes": {
                    "type": "array",
                    "minItems": 0,
                    "items": {
                        "$ref": "#/definitions/OAuth2ScopeName"
                    }
                },
                "remotes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ModuleKeySchema"
                    }
                },
                "actions": {
                    "type": "object",
                    "required": [
                        "authorization",
                        "exchange",
                        "retrieveProfile"
                    ],
                    "additionalProperties": false,
                    "properties": {
                        "authorization": {
                            "$ref": "#/definitions/AuthorizeActionDefinition"
                        },
                        "exchange": {
                            "$ref": "#/definitions/ExchangeActionDefinition"
                        },
                        "refreshToken": {
                            "$ref": "#/definitions/ExchangeActionDefinition"
                        },
                        "revokeToken": {
                            "$ref": "#/definitions/ActionDefinition"
                        },
                        "retrieveProfile": {
                            "oneOf": [
                                {
                                    "type": "object",
                                    "title": "DynamicProfileRetriever",
                                    "description": "Use a Forge function to map the fields to profile information",
                                    "required": [
                                        "remote",
                                        "path",
                                        "function"
                                    ],
                                    "additionalProperties": false,
                                    "properties": {
                                        "remote": {
                                            "$ref": "#/definitions/ModuleKeySchema"
                                        },
                                        "path": {
                                            "type": "string",
                                            "maxLength": 1000
                                        },
                                        "function": {
                                            "$ref": "#/definitions/ModuleKeySchema"
                                        },
                                        "overrides": {
                                            "$ref": "#/definitions/ActionOverridesDefinition",
                                            "description": "Custom overrides for the request"
                                        }
                                    }
                                },
                                {
                                    "type": "object",
                                    "title": "StaticProfileRetriever",
                                    "description": "A static direct mapping of API response fields to profile information",
                                    "required": [
                                        "remote",
                                        "path",
                                        "resolvers"
                                    ],
                                    "additionalProperties": false,
                                    "properties": {
                                        "remote": {
                                            "$ref": "#/definitions/ModuleKeySchema"
                                        },
                                        "path": {
                                            "type": "string",
                                            "maxLength": 1000
                                        },
                                        "resolvers": {
                                            "type": "object",
                                            "required": [
                                                "id",
                                                "displayName"
                                            ],
                                            "additionalProperties": false,
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "displayName": {
                                                    "type": "string"
                                                },
                                                "avatarUrl": {
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "queryParameters": {
                                            "type": "object",
                                            "description": "Additional GET query parameters sent to the API",
                                            "additionalProperties": false,
                                            "patternProperties": {
                                                "^[a-zA-Z0-9_-]+$": {
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "oidc": {
                                            "type": "object",
                                            "description": "Configuration for the use of OpenID Connect ID tokens by the profile retriever",
                                            "additionalProperties": false,
                                            "properties": {
                                                "mode": {
                                                    "type": "string",
                                                    "description": "When using the 'fallback' value, the ID token will be used to populate profile information only if the profile data cannot be fetched from the profile API",
                                                    "enum": [
                                                        "fallback"
                                                    ]
                                                }
                                            }
                                        },
                                        "method": {
                                            "type": "string",
                                            "description": "HTTP method to use for the request",
                                            "enum": [
                                                "GET",
                                                "POST",
                                                "PUT"
                                            ]
                                        },
                                        "overrides": {
                                            "$ref": "#/definitions/ActionOverridesDefinition",
                                            "description": "Custom overrides for the request"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "ActionOverridesDefinition": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "headers": {
                    "type": "object",
                    "description": "The exact headers to be sent in the request",
                    "additionalProperties": false,
                    "patternProperties": {
                        "^[a-zA-Z0-9_-]+$": {
                            "type": "string"
                        }
                    }
                },
                "body": {
                    "type": "object",
                    "description": "The exact body to be sent in the request",
                    "additionalProperties": false,
                    "patternProperties": {
                        "^[a-zA-Z0-9_-]+$": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "AuthorizeActionDefinition": {
            "type": "object",
            "required": [
                "remote",
                "path"
            ],
            "additionalProperties": false,
            "properties": {
                "remote": {
                    "$ref": "#/definitions/ModuleKeySchema"
                },
                "path": {
                    "type": "string",
                    "maxLength": 1000
                },
                "queryParameters": {
                    "type": "object",
                    "description": "Additional GET parameters sent to the API",
                    "additionalProperties": false,
                    "patternProperties": {
                        "^[a-zA-Z0-9_-]+$": {
                            "type": "string"
                        }
                    }
                },
                "additionalConsentParameters": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "var": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "var"
                                ],
                                "additionalProperties": false
                            }
                        ]
                    }
                }
            }
        },
        "ExchangeActionDefinition": {
            "type": "object",
            "required": [
                "remote",
                "path"
            ],
            "additionalProperties": false,
            "properties": {
                "remote": {
                    "$ref": "#/definitions/ModuleKeySchema"
                },
                "path": {
                    "type": "string",
                    "maxLength": 1000
                },
                "resolvers": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "accessToken": {
                            "type": "string",
                            "description": "Path to the 'access token' parameter within the JSON response from the auhuorization API (full stop separated for nested parameters)",
                            "default": "access_token",
                            "maxLength": 1000
                        },
                        "accessTokenExpires": {
                            "type": "string",
                            "description": "Path to the 'access token expires' parameter within the JSON response from the auhuorization API (full stop separated for nested parameters)",
                            "default": "expires_in",
                            "maxLength": 1000
                        },
                        "refreshToken": {
                            "type": "string",
                            "description": "Path to the 'refresh token' parameter within the JSON response from the auhuorization API (full stop separated for nested parameters)",
                            "default": "refresh_token",
                            "maxlength": 1000
                        }
                    }
                },
                "useBasicAuth": {
                    "type": "boolean",
                    "description": "An optional flag that indicates HTTP basic authentication should be used for the exchange request"
                },
                "overrides": {
                    "$ref": "#/definitions/ActionOverridesDefinition",
                    "description": "Custom overrides for the request"
                }
            }
        },
        "ActionDefinition": {
            "type": "object",
            "required": [
                "remote",
                "path"
            ],
            "additionalProperties": false,
            "properties": {
                "remote": {
                    "$ref": "#/definitions/ModuleKeySchema"
                },
                "path": {
                    "type": "string",
                    "maxLength": 1000
                },
                "queryParameters": {
                    "type": "object",
                    "description": "Additional GET parameters sent to the API",
                    "additionalProperties": false,
                    "patternProperties": {
                        "^[a-zA-Z0-9_-]+$": {
                            "type": "string"
                        }
                    }
                },
                "overrides": {
                    "$ref": "#/definitions/ActionOverridesDefinition",
                    "description": "Custom overrides for the request"
                }
            }
        },
        "Array": {
            "items": {
                "type": "string"
            },
            "title": "Array",
            "type": "array"
        },
        "ExtensionKey": {
            "description": "The key for an extension in CaaS. That means that this is a reference to another extension in your descriptor / manifest.",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9-._]+$",
            "title": "ExtensionKey",
            "type": "string"
        },
        "ProductEvents": {
            "$ref": "#/definitions/Array",
            "title": "ProductEvents",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "ProductEventsFilter": {
            "additionalProperties": false,
            "title": "ProductEventsFilter",
            "type": "object",
            "properties": {
                "ignoreSelf": {
                    "title": "ignoreSelf",
                    "description": "The app will ignore events generated by itself",
                    "type": "boolean"
                },
                "expression": {
                    "title": "expression",
                    "description": "The app will ignore events filtered out by expression",
                    "type": "string"
                },
                "onError": {
                    "title": "onError",
                    "description": "The default behavior when an error during event filtering occurs",
                    "type": "string",
                    "default": "IGNORE_AND_LOG",
                    "enum": [
                        "IGNORE",
                        "IGNORE_AND_LOG",
                        "RECEIVE",
                        "RECEIVE_AND_LOG"
                    ]
                },
                "appIsLicensed": {
                    "title": "appIsLicensed",
                    "description": "When set to true, invocations are skipped if the app does not have an active license for the site.",
                    "type": "boolean"
                }
            },
            "anyOf": [
                {
                    "required": [
                        "ignoreSelf"
                    ]
                },
                {
                    "required": [
                        "expression"
                    ]
                },
                {
                    "required": [
                        "expression",
                        "onError"
                    ]
                },
                {
                    "required": [
                        "appIsLicensed"
                    ]
                }
            ]
        },
        "PayloadInclude": {
            "additionalProperties": false,
            "title": "PayloadInclude",
            "type": "object",
            "properties": {
                "include": {
                    "title": "include",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "propertyPaths": {
                            "title": "propertyPaths",
                            "description": "List of property paths to include in the event payload",
                            "type": "array",
                            "items": {
                                "type": "string",
                                "minLength": 1
                            },
                            "minItems": 1
                        },
                        "fields": {
                            "title": "fields",
                            "description": "List of fields to include in the event payload",
                            "type": "array",
                            "items": {
                                "type": "string",
                                "minLength": 1
                            },
                            "minItems": 1
                        }
                    },
                    "anyOf": [
                        {
                            "required": [
                                "propertyPaths"
                            ]
                        },
                        {
                            "required": [
                                "fields"
                            ]
                        }
                    ]
                }
            },
            "required": [
                "include"
            ]
        },
        "FilteredProductEvents": {
            "title": "FilteredProductEvents",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "eventType": {
                        "title": "eventType",
                        "type": "string"
                    },
                    "filter": {
                        "$ref": "#/definitions/ProductEventsFilter",
                        "title": "filter",
                        "type": "object"
                    },
                    "payload": {
                        "$ref": "#/definitions/PayloadInclude",
                        "title": "payload",
                        "type": "object"
                    }
                },
                "required": [
                    "eventType",
                    "filter"
                ]
            }
        },
        "UrlFormat": {
            "description": "The URL format to use for this webtrigger.",
            "type": "string",
            "enum": [
                "v1",
                "v2"
            ]
        },
        "Authentication": {
            "description": "The authentication method to use for this webtrigger request.",
            "type": "string",
            "enum": [
                "hmac",
                "none"
            ]
        },
        "RequestOptions": {
            "additionalProperties": false,
            "properties": {
                "authentication": {
                    "$ref": "#/definitions/Authentication"
                }
            },
            "type": "object"
        },
        "ResponseOptions": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "description": "The type of response that the webtrigger will return. If set to 'static', the response will be the same for every invocation and will use one of the responses defined under 'outputs'. If set to 'dynamic', the response will be generated by the function that the webtrigger is invoking.",
                    "type": "string",
                    "enum": [
                        "static",
                        "dynamic"
                    ]
                },
                "outputs": {
                    "description": "An array of defined responses that the webtrigger can return.",
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "key": {
                                "type": "string",
                                "maxLength": 255
                            },
                            "statusCode": {
                                "type": "integer"
                            },
                            "body": {
                                "type": "string",
                                "maxLength": 1024
                            },
                            "contentType": {
                                "type": "string",
                                "maxLength": 255
                            }
                        },
                        "required": [
                            "key",
                            "statusCode"
                        ]
                    }
                }
            },
            "required": [
                "type"
            ],
            "allOf": [
                {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "static"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "outputs"
                        ]
                    },
                    "else": {
                        "not": {
                            "required": [
                                "outputs"
                            ]
                        }
                    }
                }
            ],
            "type": "object"
        },
        "ConsumerQueue": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36,
            "pattern": "^[a-zA-Z0-9-_]+$",
            "description": "The name of the queue that this consumer listens to.",
            "title": "queue"
        },
        "crossVersion": {
            "title": "crossVersion",
            "description": "Enables consumption of events originating from previous app versions.",
            "type": "boolean",
            "default": false
        },
        "ScheduledTriggerFilter": {
            "additionalProperties": false,
            "title": "ScheduledTriggerFilter",
            "type": "object",
            "properties": {
                "appIsLicensed": {
                    "title": "appIsLicensed",
                    "description": "When set to true, invocations are skipped if the app does not have an active license for the site.",
                    "type": "boolean"
                }
            },
            "required": [
                "appIsLicensed"
            ]
        },
        "RuntimeLayer": {
            "type": "object",
            "properties": {
                "identifier": {
                    "type": "string"
                },
                "layer": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string"
                        },
                        "version": {
                            "type": "string"
                        },
                        "arn": {
                            "type": "string"
                        }
                    }
                }
            },
            "required": [
                "identifier",
                "layer"
            ]
        },
        "RuntimeWrapper": {
            "type": "object",
            "properties": {
                "identifier": {
                    "type": "string"
                },
                "wrapper": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string"
                        },
                        "version": {
                            "type": "string"
                        }
                    }
                }
            },
            "required": [
                "identifier",
                "wrapper"
            ]
        },
        "ExternalAuthFunctionProvider": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "provider": {
                    "type": "string",
                    "description": "A key referencing authentication provider."
                },
                "requiredScopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of scopes the function requires."
                },
                "requestAllScopes": {
                    "type": "boolean",
                    "description": "An optional flag to indicate that if requireScopes is not satisfied, all scopes should be requested."
                }
            },
            "required": [
                "provider"
            ]
        },
        "ExternalAuthFunctionProviders": {
            "type": "object",
            "description": "A list of the providers required by the function.",
            "properties": {
                "auth": {
                    "type": "array",
                    "description": "A list of keys or objects referencing authentication providers.",
                    "items": {
                        "oneOf": [
                            {
                                "type": "string",
                                "description": "A key referencing authentication provider."
                            },
                            {
                                "$ref": "#/definitions/ExternalAuthFunctionProvider"
                            }
                        ]
                    }
                }
            },
            "required": [
                "auth"
            ]
        },
        "FunctionState": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "key": {
                    "type": "string"
                },
                "next": {
                    "type": "string"
                },
                "end": {
                    "type": "boolean",
                    "default": false
                },
                "resolver": {
                    "type": "object",
                    "properties": {
                        "function": {
                            "type": "string"
                        },
                        "method": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "function",
                        "method"
                    ]
                }
            },
            "required": [
                "key",
                "resolver"
            ]
        },
        "EndpointRoute": {
            "type": "object",
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path of the remote endpoint to invoke"
                }
            },
            "required": [
                "path"
            ]
        },
        "EndpointAuth": {
            "type": "object",
            "properties": {
                "appUserToken": {
                    "type": "object",
                    "required": [
                        "enabled"
                    ],
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable sharing user token with the remote"
                        }
                    }
                },
                "appSystemToken": {
                    "type": "object",
                    "required": [
                        "enabled"
                    ],
                    "properties": {
                        "enabled": {
                            "type": "boolean",
                            "description": "Enable sharing app token with the remote"
                        }
                    }
                }
            }
        },
        "CoreActionIOType": {
            "type": "string",
            "enum": [
                "boolean",
                "integer",
                "number",
                "string"
            ]
        },
        "ActionInput": {
            "type": "object",
            "required": [
                "title",
                "description",
                "type"
            ],
            "properties": {
                "title": {
                    "type": "string"
                },
                "description": {
                    "type": "string",
                    "description": "A description of what this particular input is intended for. Example: 'ID of the Issue that will be updated as a result of this action'\n"
                },
                "type": {
                    "$ref": "#/definitions/CoreActionIOType"
                }
            }
        },
        "ActionOutput": {
            "type": "object",
            "required": [
                "description",
                "nullable",
                "type"
            ],
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A description of what this particular output represents. Example: 'ID of the Issue that was created as a result of this action'\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "A flag to indicate whether the output can have a value of null."
                },
                "type": {
                    "$ref": "#/definitions/CoreActionIOType"
                }
            }
        },
        "OutputContext": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "entityName",
                "outputType",
                "outputDomain"
            ],
            "properties": {
                "entityName": {
                    "type": "string",
                    "description": "The entity type that this action outputs",
                    "minLength": 1,
                    "maxLength": 12
                },
                "outputType": {
                    "type": "string",
                    "description": "The type of the output shape",
                    "enum": [
                        "OBJECT",
                        "LIST"
                    ]
                },
                "outputDomain": {
                    "type": "string",
                    "description": "The domain that this action output belongs to",
                    "minLength": 1,
                    "maxLength": 12,
                    "pattern": "^[a-z-]+$"
                }
            },
            "title": "OutputContext"
        },
        "DisplayConditions": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "properties": {
                        "customFieldName": {
                            "title": "customFieldName",
                            "type": "string"
                        },
                        "customFieldValue": {
                            "title": "customFieldValue",
                            "type": "string"
                        }
                    },
                    "required": [
                        "customFieldName",
                        "customFieldValue"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "componentTypes": {
                            "anyOf": [
                                {
                                    "items": {
                                        "enum": [
                                            "APPLICATION",
                                            "LIBRARY",
                                            "OTHER",
                                            "SERVICE",
                                            "DATASET",
                                            "DASHBOARD",
                                            "DATA_PRODUCT",
                                            "CAPABILITY",
                                            "CLOUD_RESOURCE",
                                            "DATA_PIPELINE",
                                            "MACHINE_LEARNING_MODEL",
                                            "UI_ELEMENT",
                                            "WEBSITE"
                                        ],
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "enum": [
                                        "APPLICATION",
                                        "LIBRARY",
                                        "OTHER",
                                        "SERVICE",
                                        "DATASET",
                                        "DASHBOARD",
                                        "DATA_PRODUCT",
                                        "CAPABILITY",
                                        "CLOUD_RESOURCE",
                                        "DATA_PIPELINE",
                                        "MACHINE_LEARNING_MODEL",
                                        "UI_ELEMENT",
                                        "WEBSITE"
                                    ],
                                    "type": "string"
                                }
                            ],
                            "title": "componentTypes"
                        }
                    },
                    "required": [
                        "componentTypes"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "not": {
                            "anyOf": [
                                {
                                    "additionalProperties": false,
                                    "properties": {
                                        "customFieldName": {
                                            "title": "customFieldName",
                                            "type": "string"
                                        },
                                        "customFieldValue": {
                                            "title": "customFieldValue",
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "customFieldName",
                                        "customFieldValue"
                                    ],
                                    "type": "object"
                                },
                                {
                                    "additionalProperties": false,
                                    "properties": {
                                        "componentTypes": {
                                            "anyOf": [
                                                {
                                                    "items": {
                                                        "enum": [
                                                            "APPLICATION",
                                                            "LIBRARY",
                                                            "OTHER",
                                                            "SERVICE",
                                                            "DATASET",
                                                            "DASHBOARD",
                                                            "DATA_PRODUCT",
                                                            "CAPABILITY",
                                                            "CLOUD_RESOURCE",
                                                            "DATA_PIPELINE",
                                                            "MACHINE_LEARNING_MODEL",
                                                            "UI_ELEMENT",
                                                            "WEBSITE"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "type": "array"
                                                },
                                                {
                                                    "enum": [
                                                        "APPLICATION",
                                                        "LIBRARY",
                                                        "OTHER",
                                                        "SERVICE",
                                                        "DATASET",
                                                        "DASHBOARD",
                                                        "DATA_PRODUCT",
                                                        "CAPABILITY",
                                                        "CLOUD_RESOURCE",
                                                        "DATA_PIPELINE",
                                                        "MACHINE_LEARNING_MODEL",
                                                        "UI_ELEMENT",
                                                        "WEBSITE"
                                                    ],
                                                    "type": "string"
                                                }
                                            ],
                                            "title": "componentTypes"
                                        }
                                    },
                                    "required": [
                                        "componentTypes"
                                    ],
                                    "type": "object"
                                }
                            ],
                            "title": "not"
                        }
                    },
                    "required": [
                        "not"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "or": {
                            "items": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "customFieldName": {
                                                "title": "customFieldName",
                                                "type": "string"
                                            },
                                            "customFieldValue": {
                                                "title": "customFieldValue",
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "customFieldName",
                                            "customFieldValue"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "componentTypes": {
                                                "anyOf": [
                                                    {
                                                        "items": {
                                                            "enum": [
                                                                "APPLICATION",
                                                                "LIBRARY",
                                                                "OTHER",
                                                                "SERVICE",
                                                                "DATASET",
                                                                "DASHBOARD",
                                                                "DATA_PRODUCT",
                                                                "CAPABILITY",
                                                                "CLOUD_RESOURCE",
                                                                "DATA_PIPELINE",
                                                                "MACHINE_LEARNING_MODEL",
                                                                "UI_ELEMENT",
                                                                "WEBSITE"
                                                            ],
                                                            "type": "string"
                                                        },
                                                        "type": "array"
                                                    },
                                                    {
                                                        "enum": [
                                                            "APPLICATION",
                                                            "LIBRARY",
                                                            "OTHER",
                                                            "SERVICE",
                                                            "DATASET",
                                                            "DASHBOARD",
                                                            "DATA_PRODUCT",
                                                            "CAPABILITY",
                                                            "CLOUD_RESOURCE",
                                                            "DATA_PIPELINE",
                                                            "MACHINE_LEARNING_MODEL",
                                                            "UI_ELEMENT",
                                                            "WEBSITE"
                                                        ],
                                                        "type": "string"
                                                    }
                                                ],
                                                "title": "componentTypes"
                                            }
                                        },
                                        "required": [
                                            "componentTypes"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "not": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "customFieldName": {
                                                                "title": "customFieldName",
                                                                "type": "string"
                                                            },
                                                            "customFieldValue": {
                                                                "title": "customFieldValue",
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "customFieldName",
                                                            "customFieldValue"
                                                        ],
                                                        "type": "object"
                                                    },
                                                    {
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "componentTypes": {
                                                                "anyOf": [
                                                                    {
                                                                        "items": {
                                                                            "enum": [
                                                                                "APPLICATION",
                                                                                "LIBRARY",
                                                                                "OTHER",
                                                                                "SERVICE",
                                                                                "DATASET",
                                                                                "DASHBOARD",
                                                                                "DATA_PRODUCT",
                                                                                "CAPABILITY",
                                                                                "CLOUD_RESOURCE",
                                                                                "DATA_PIPELINE",
                                                                                "MACHINE_LEARNING_MODEL",
                                                                                "UI_ELEMENT",
                                                                                "WEBSITE"
                                                                            ],
                                                                            "type": "string"
                                                                        },
                                                                        "type": "array"
                                                                    },
                                                                    {
                                                                        "enum": [
                                                                            "APPLICATION",
                                                                            "LIBRARY",
                                                                            "OTHER",
                                                                            "SERVICE",
                                                                            "DATASET",
                                                                            "DASHBOARD",
                                                                            "DATA_PRODUCT",
                                                                            "CAPABILITY",
                                                                            "CLOUD_RESOURCE",
                                                                            "DATA_PIPELINE",
                                                                            "MACHINE_LEARNING_MODEL",
                                                                            "UI_ELEMENT",
                                                                            "WEBSITE"
                                                                        ],
                                                                        "type": "string"
                                                                    }
                                                                ],
                                                                "title": "componentTypes"
                                                            }
                                                        },
                                                        "required": [
                                                            "componentTypes"
                                                        ],
                                                        "type": "object"
                                                    }
                                                ],
                                                "title": "not"
                                            }
                                        },
                                        "required": [
                                            "not"
                                        ],
                                        "type": "object"
                                    }
                                ]
                            },
                            "title": "or",
                            "type": "array"
                        }
                    },
                    "required": [
                        "or"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "and": {
                            "items": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "customFieldName": {
                                                "title": "customFieldName",
                                                "type": "string"
                                            },
                                            "customFieldValue": {
                                                "title": "customFieldValue",
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "customFieldName",
                                            "customFieldValue"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "componentTypes": {
                                                "anyOf": [
                                                    {
                                                        "items": {
                                                            "enum": [
                                                                "APPLICATION",
                                                                "LIBRARY",
                                                                "OTHER",
                                                                "SERVICE",
                                                                "DATASET",
                                                                "DASHBOARD",
                                                                "DATA_PRODUCT",
                                                                "CAPABILITY",
                                                                "CLOUD_RESOURCE",
                                                                "DATA_PIPELINE",
                                                                "MACHINE_LEARNING_MODEL",
                                                                "UI_ELEMENT",
                                                                "WEBSITE"
                                                            ],
                                                            "type": "string"
                                                        },
                                                        "type": "array"
                                                    },
                                                    {
                                                        "enum": [
                                                            "APPLICATION",
                                                            "LIBRARY",
                                                            "OTHER",
                                                            "SERVICE",
                                                            "DATASET",
                                                            "DASHBOARD",
                                                            "DATA_PRODUCT",
                                                            "CAPABILITY",
                                                            "CLOUD_RESOURCE",
                                                            "DATA_PIPELINE",
                                                            "MACHINE_LEARNING_MODEL",
                                                            "UI_ELEMENT",
                                                            "WEBSITE"
                                                        ],
                                                        "type": "string"
                                                    }
                                                ],
                                                "title": "componentTypes"
                                            }
                                        },
                                        "required": [
                                            "componentTypes"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "not": {
                                                "anyOf": [
                                                    {
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "customFieldName": {
                                                                "title": "customFieldName",
                                                                "type": "string"
                                                            },
                                                            "customFieldValue": {
                                                                "title": "customFieldValue",
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "customFieldName",
                                                            "customFieldValue"
                                                        ],
                                                        "type": "object"
                                                    },
                                                    {
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "componentTypes": {
                                                                "anyOf": [
                                                                    {
                                                                        "items": {
                                                                            "enum": [
                                                                                "APPLICATION",
                                                                                "LIBRARY",
                                                                                "OTHER",
                                                                                "SERVICE",
                                                                                "DATASET",
                                                                                "DASHBOARD",
                                                                                "DATA_PRODUCT",
                                                                                "CAPABILITY",
                                                                                "CLOUD_RESOURCE",
                                                                                "DATA_PIPELINE",
                                                                                "MACHINE_LEARNING_MODEL",
                                                                                "UI_ELEMENT",
                                                                                "WEBSITE"
                                                                            ],
                                                                            "type": "string"
                                                                        },
                                                                        "type": "array"
                                                                    },
                                                                    {
                                                                        "enum": [
                                                                            "APPLICATION",
                                                                            "LIBRARY",
                                                                            "OTHER",
                                                                            "SERVICE",
                                                                            "DATASET",
                                                                            "DASHBOARD",
                                                                            "DATA_PRODUCT",
                                                                            "CAPABILITY",
                                                                            "CLOUD_RESOURCE",
                                                                            "DATA_PIPELINE",
                                                                            "MACHINE_LEARNING_MODEL",
                                                                            "UI_ELEMENT",
                                                                            "WEBSITE"
                                                                        ],
                                                                        "type": "string"
                                                                    }
                                                                ],
                                                                "title": "componentTypes"
                                                            }
                                                        },
                                                        "required": [
                                                            "componentTypes"
                                                        ],
                                                        "type": "object"
                                                    }
                                                ],
                                                "title": "not"
                                            }
                                        },
                                        "required": [
                                            "not"
                                        ],
                                        "type": "object"
                                    }
                                ]
                            },
                            "title": "and",
                            "type": "array"
                        }
                    },
                    "required": [
                        "and"
                    ],
                    "type": "object"
                }
            ]
        },
        "i18nProperty": {
            "properties": {
                "value": {
                    "maxLength": 1500,
                    "type": "string",
                    "fieldDescription": "\n\nThe human-readable default value. This will be used if no translation exists.\n Only the following HTML tags are supported: `b`, `i`, `strong`, `em`, and `code`.\n\n"
                },
                "i18n": {
                    "maxLength": 300,
                    "type": "string",
                    "fieldDescription": "\n\nThe localization key for the human-readable value.\n <a href=\"../../internationalization/\">Translations</a> for the keys are defined at the top level of the\n <a href=\"../../add-on-descriptor/\">add-on descriptor</a>.\n\n"
                }
            },
            "required": [
                "value"
            ],
            "shortClassName": "i18nProperty",
            "type": "object",
            "title": "i18n Property",
            "description": "\n\nRepresents a string that can be resolved via a localization properties file. You can use the same `i18n Property` key\n and value in multiple places if you like, but identical keys must have identical values.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"value\": \"My text\"\n    }\n\n\n"
        },
        "icon": {
            "properties": {
                "width": {
                    "type": "integer",
                    "fieldDescription": "\n\nThe width in pixels of the icon image.\n\n"
                },
                "url": {
                    "type": "string",
                    "fieldDescription": "\n\nThe URL of the icon. Your icon needs to be hosted remotely at a web-accessible location. You can specify the\n URL as an absolute URL or relative to the add-on's base URL.\n\n"
                },
                "height": {
                    "type": "integer",
                    "fieldDescription": "\n\nThe height in pixels of the icon image.\n\n"
                }
            },
            "required": [
                "url"
            ],
            "shortClassName": "iconBean",
            "type": "object",
            "title": "Icon",
            "description": "\n\nDefines an icon to display.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"icon\": {\n        \"width\": 16,\n        \"height\": 16,\n        \"url\": \"/my-icon.png\"\n      }\n    }\n\n\n"
        },
        "singleCondition": {
            "properties": {
                "condition": {
                    "maxLength": 100,
                    "type": "string",
                    "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
                },
                "invert": {
                    "type": "boolean",
                    "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
                    "defaultValue": "false"
                },
                "params": {
                    "additionalProperties": true,
                    "type": "object",
                    "fieldTitle": "Object",
                    "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"params\": {\n        \"someOtherProperty\": \"someValue\",\n        \"myCustomProperty\": \"myValue\"\n      }\n    }\n\n\n"
                }
            },
            "required": [
                "condition"
            ],
            "shortClassName": "singleConditionBean",
            "type": "object",
            "title": "Single Condition",
            "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"condition\": \"user_is_logged_in\",\n      \"invert\": false\n    }\n\n\n"
        },
        "compositeCondition": {
            "properties": {
                "conditions": {
                    "items": {
                        "type": "object",
                        "anyOf": [
                            {
                                "$ref": "#"
                            },
                            {
                                "$ref": "#/definitions/singleCondition"
                            }
                        ]
                    },
                    "type": "array",
                    "fieldDescription": "\n\nThe conditions to compose using the specific logical operator.\n\n"
                },
                "type": {
                    "enum": [
                        "and",
                        "AND",
                        "or",
                        "OR"
                    ],
                    "type": "string",
                    "fieldDescription": "\n\nDefines what logical operator is used to evaluate its collection of condition elements.\n\n"
                }
            },
            "shortClassName": "compositeConditionBean",
            "type": "object",
            "title": "Composite Condition",
            "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"conditions\": [\n        {\n          \"or\": [\n            {\n              \"condition\": \"can_attach_file_to_issue\",\n              \"invert\": false\n            },\n            {\n              \"condition\": \"is_issue_assigned_to_current_user\",\n              \"invert\": false\n            }\n          ]\n        },\n        {\n          \"condition\": \"user_is_logged_in\",\n          \"invert\": false\n        }\n      ]\n    }\n\n\n"
        },
        "webPanelLayout": {
            "properties": {
                "width": {
                    "maxLength": 10,
                    "type": "string",
                    "fieldDescription": "\n\n"
                },
                "height": {
                    "maxLength": 10,
                    "type": "string",
                    "fieldDescription": "\n\n"
                }
            },
            "shortClassName": "webPanelLayout",
            "type": "object",
            "title": "Web Panel Layout",
            "description": "\n\n<h3>Example</h3>\n\n\n\n\n\n    {\n      \"layout\": {\n        \"width\": \"100\",\n        \"height\": \"200\"\n      }\n    }\n\n\n"
        },
        "dialogOptions": {
            "properties": {
                "size": {
                    "enum": [
                        "small",
                        "SMALL",
                        "medium",
                        "MEDIUM",
                        "large",
                        "LARGE",
                        "x-large",
                        "X-LARGE",
                        "fullscreen",
                        "FULLSCREEN",
                        "maximum",
                        "MAXIMUM"
                    ],
                    "type": "string",
                    "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n     This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
                },
                "chrome": {
                    "type": "boolean",
                    "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
                    "defaultValue": "true"
                },
                "width": {
                    "maxLength": 10,
                    "type": "string",
                    "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
                },
                "header": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
                },
                "height": {
                    "maxLength": 10,
                    "type": "string",
                    "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
                }
            },
            "shortClassName": "dialogOptions",
            "type": "object",
            "title": "Dialog Options",
            "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n     These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n    {\n      \"target\": {\n        \"type\": \"dialog\",\n        \"options\": {\n          \"height\": \"100px\",\n          \"width\": \"200px\"\n        }\n      }\n    }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dialogs\": [\n          {\n            \"url\": \"/my-dialog-content\",\n            \"options\": {\n              \"size\": \"fullscreen\",\n              \"header\": {\n                \"value\": \"Example Dialog\"\n              }\n            },\n            \"key\": \"dialog-module-key\"\n          }\n        ]\n      }\n    }\n\n\n"
        },
        "featureFlagProviderActionsBean": {
            "properties": {
                "linkFlag": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "featureFlagProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction for linking an existing feature flag to a Jira issue.\n\n"
                },
                "createFlag": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "featureFlagProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction for creating a feature flag and linking it with a Jira issue.\n\n"
                },
                "listFlags": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "featureFlagProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction for showing all linked feature flags, when there are multiple feature flags linked to a Jira issue.\n\n"
                }
            },
            "shortClassName": "featureFlagProviderActionsBean",
            "type": "object",
            "title": "Feature Flag Actions",
            "description": "\n\n<p>Feature flag actions that can be performed by Jira users.</p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n\n"
        },
        "url": {
            "properties": {
                "url": {
                    "type": "string",
                    "fieldDescription": "\n\n"
                }
            },
            "required": [
                "url"
            ],
            "shortClassName": "urlBean",
            "type": "object",
            "title": "URL",
            "description": "\n\n"
        },
        "developmentToolModuleActionsBean": {
            "properties": {
                "createBranch": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "developmentToolModuleActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>.</p>\n\n",
                    "fieldDescription": "\n"
                },
                "searchConnectedWorkspaces": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": ""
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "developmentToolModuleActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>.</p>\n\n",
                    "fieldDescription": "\n"
                },
                "searchRepositories": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": ""
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "developmentToolModuleActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>.</p>\n\n",
                    "fieldDescription": "\n\n"
                },
                "associateRepository": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": ""
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "developmentToolModuleActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>.</p>\n\n",
                    "fieldDescription": ""
                }
            },
            "shortClassName": "developmentToolModuleActionsBean",
            "type": "object",
            "title": "Development Actions",
            "description": "\n\n<p>Development actions that can be performed by Jira users.</p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n\n"
        },
        "webhook": {
            "properties": {
                "url": {
                    "type": "string"
                }
            },
            "required": [
                "url"
            ],
            "additionalProperties": false,
            "shortClassName": "webhookBean",
            "type": "object"
        },
        "configForm": {
            "properties": {
                "url": {
                    "type": "string"
                }
            },
            "required": [
                "url"
            ],
            "additionalProperties": false,
            "shortClassName": "configFormBean",
            "type": "object"
        },
        "callback": {
            "properties": {
                "type": {
                    "enum": [
                        "jwt",
                        "JWT"
                    ],
                    "type": "string"
                },
                "url": {
                    "type": "string"
                }
            },
            "required": [
                "type",
                "url"
            ],
            "additionalProperties": false,
            "shortClassName": "callbackBean",
            "type": "object"
        },
        "operationsInfoProviderActionsBean": {
            "properties": {
                "fetchWorkspaces": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "operationsInfoProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction for fetching operations workspaces by IDs.\n\n"
                },
                "searchContainers": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "operationsInfoProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction for showing any partial or full matches using a search on the  operations container name for all workspaces.\n\n"
                },
                "onEntityAssociated": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "operationsInfoProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to notify the operations provider when an incident or  post-incident-review has been associated with jira issue\n\n"
                },
                "onEntityDisassociated": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "operationsInfoProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to notify the operations provider when incident or  post-incident-review has its association removed from jira issue\n\n"
                }
            },
            "shortClassName": "operationsInfoProviderActionsBean",
            "type": "object",
            "title": "Operations Information Actions",
            "description": "\n\n<p>Operations Information actions that can be performed by Jira users.</p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n",
            "required": [
                "fetchWorkspaces",
                "searchContainers"
            ]
        },
        "devOpsComponentProviderActionsBean": {
            "properties": {
                "associate": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "devOpsComponentProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to associate a devops component entity with a Jira issue.\n\n"
                },
                "disassociate": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "devOpsComponentProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to disassociate a devops component entity from a Jira issue.\n\n"
                },
                "onEntityAssociated": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "devOpsComponentProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to notify the component provider when a devops component  has been associated with a Jira issue.\n\n"
                },
                "onEntityDisassociated": {
                    "properties": {
                        "templateUrl": {
                            "type": "string",
                            "fieldDescription": "\n\n"
                        }
                    },
                    "required": [
                        "templateUrl"
                    ],
                    "shortClassName": "devOpsComponentProviderActionBean",
                    "type": "object",
                    "description": "\n\n<p>Defines the URL template that is used when an action is invoked. The following context parameters are supported: <code>{issue.key}</code>, <code>{issue.summary}</code>, <code>{issue.flags}</code>.</p>\n\n",
                    "fieldDescription": "\n\nAction to notify the component provider when a devops component  has been disassociated from a Jira issue.\n\n"
                }
            },
            "shortClassName": "devOpsComponentProviderActionsBean",
            "type": "object",
            "title": "DevOps Component Actions",
            "description": "\n\n<p>DevOps Component actions that can be performed by Jira users.</p>\n<p>Each action is optional (unless indicated otherwise). The absence of an action indicates that the action is not supported by the provider.</p>\n",
            "required": [
                "associate",
                "disassociate"
            ]
        },
        "uiSupport": {
            "properties": {
                "defaultOperator": {
                    "maxLength": 100,
                    "type": "string",
                    "fieldDescription": "\n\nThe CQL builder will use this operator when constructing the CQL string.\n\n"
                },
                "dataUri": {
                    "type": "string",
                    "fieldDescription": "\n\nIf provided, the CQL builder will provide a drop down and use this url to find the list of value values.  This\n URL should return a json array of objects describing the valid options.\n\n <pre><code>\n [\n   {\"id\": \"value1\", \"text\": \"First Option\"},\n   {\"id\": \"value2\", \"text\": \"Second Option\"}\n ]\n </code></pre>\n\n <strong>NOTE:</strong> since the call to this URL will be made from the user's browser, you need to enable\n <a href=\"http://www.w3.org/TR/cors/\">CORS</a> headers for responses to this resource.\n\n Setting a <code>Access-Control-Allow-Origin</code> header to the URL of the Atlassian Cloud instance where\n this add-on is installed is usually enough to satisfy the CORS requirements.  This can be done by tracking\n the client key and its url in your <code>/installed</code> callback, then looking up the url when the request\n is made.\n\n"
                },
                "valueType": {
                    "enum": [
                        "space",
                        "SPACE",
                        "label",
                        "LABEL",
                        "user",
                        "USER",
                        "contentid",
                        "CONTENTID",
                        "contenttype",
                        "CONTENTTYPE",
                        "date",
                        "DATE",
                        "string",
                        "STRING",
                        "number",
                        "NUMBER"
                    ],
                    "type": "string",
                    "fieldDescription": "\n\nAs well as providing a text field and allowing any entry, the UI support system provides a number of\n build in components that can enrich the user experience.  These provide extra user interface components\n to allow setting or picking their value in an intuitive way.\n\n The type can be one of the following values:\n\n <ul>\n <li><code>space</code> - provides a space picker and stores the result space key as the result.</li>\n <li><code>label</code> - provides a label picker and stores the list of labels as the result.</li>\n <li><code>user</code> - provides a user picker and stores the username as the result.</li>\n <li><code>contentId</code> - provides a content picker and stores the content id as the result.</li>\n <li><code>contentType</code> - provides a content type picker.</li>\n <li><code>date</code> - provides a date picker</li>\n <li><code>string</code> - provides a free form text field</li>\n <li><code>number</code> - provides a free form text field</li>\n </ul>\n\n"
                },
                "name": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nThe name of this field as used by the CQL builder UI components.\n\n"
                },
                "tooltip": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nThe tooltip of this field as used by the CQL builder UI components.\n\n"
                }
            },
            "required": [
                "valueType",
                "name"
            ],
            "shortClassName": "uISupportBean",
            "type": "object",
            "title": "User Interface Support",
            "description": "\n\nThe UI Support element allows you to define how your content property field will be presented in\n the CQL Builder.\n\n When you define UI support for a field, then the CQL builder will include it in all CQL features\n in Confluence, including other CQL based macros.\n\n See the <a href=\"../content-property-index-key-configuration/\">content property key</a>\n documentation for a complete content property example.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"defaultOperator\": \"~\",\n      \"name\": {\n        \"value\": \"Content Type\",\n        \"i18n\": \"attachment.type.name\"\n      },\n      \"tooltip\": {\n        \"value\": \"Content Type Tooltip\",\n        \"i18n\": \"attachment.type.tooltip\"\n      },\n      \"dataUri\": \"/data/content-types\",\n      \"valueType\": \"string\"\n    }\n\n\n"
        },
        "customContentUISupport": {
            "properties": {
                "editComponentTitlePlaceholder": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nDefines a placeholder for title input box that will be used in the edit component.\n Following variables will be replaced at runtime:\n <ul>\n     <li><code>{spaceName}</code>: Name of the current space</li>\n     <li><code>{spaceKey}</code>: Key of the current space</li>\n     <li><code>{contentTypeName}</code>: Name of the current custom content</li>\n </ul>\n\n For example: <br>\n \"What do you want to know about {SpaceName}\" will become \"What do you want to know about Demonstration Space\"\n if user is creating a new piece of custom content in \"Demonstration Space\" space.\n\n"
                },
                "listViewComponent": {
                    "$ref": "#/definitions/componentReference",
                    "fieldDescription": "\n\nDefines a module that will be used when user clicks the navigation link displayed in the space sidebar.<br>\n The module referenced must be a <a href=\"../page/\">generalPage</a>.\n A default list view will be provided if no view component was specified in this field.\n\n"
                },
                "editComponent": {
                    "$ref": "#/definitions/componentReference",
                    "fieldDescription": "\n\nDefines a module for adding or editing custom content.<br>\n The module referenced must be a <a href=\"../page/\">generalPage</a>.\n Following context variable will be provided to the edit component URL\n <ul>\n     <li><code>customcontent.create</code>: Indicates whether user is creating or editing a piece of custom content</li>\n </ul>\n Please consult <a href=\"../../context-parameters/\">Context Parameters</a> for how to use a context variable.\n\n Confluence will provide the breadcrumbs, title input, submit and cancel button on the edit component.\n Add-on needs to supply the editor area like the screenshot shown below in a general page module.<br>\n Please refer to the <a href=\"../../jsapi/custom-content/\">Custom Content JavaScript API</a>\n for how to intercept the edit component events and override the default behavior.\n\n <img src=\"/cloud/connect/images/confluence-customcontent-edit.png\" alt=\"Custom Content Edit Component\" width=\"80%\" style=\"border:1px solid #999;margin-top:10px;width:500px\">\n\n"
                },
                "icons": {
                    "properties": {
                        "item": {
                            "$ref": "#/definitions/icon",
                            "fieldDescription": "\n\nDefines an icon that used for displaying a single custom content item in:\n <ul>\n     <li>View attachments screen when the custom content is contained in a page. </li>\n     <li>Result entry of site search.</li>\n     <li>Result entry of quick search.</li>\n </ul>\n The icon resource provided in this field must be larger or equals to 16x16 pixels.<br>\n\n"
                        },
                        "create": {
                            "$ref": "#/definitions/icon",
                            "fieldDescription": "\n\nDefines an icon that is used for custom content items in the create dialog.<br>\n The icon resource provided in this field must be larger or equals to 48x48 pixels.<br>\n It will fallback to item icon if this field is not specified.\n In that case, please ensure the item icon is larger or equals to 48x48 pixels.\n\n"
                        },
                        "list": {
                            "$ref": "#/definitions/icon",
                            "fieldDescription": "\n\nDefines an icon that used for displaying list of custom content items in:\n <ul>\n <li>Space sidebar if this custom content is allowed to be contained in space. </li>\n </ul>\n The icon resource provided in this field must be larger or equals to 20x20 pixels.<br>\n It will fallback to item icon if this field is not specified.\n In that case, please ensure the item icon is larger or equals to 20x20 pixels.\n\n"
                        }
                    },
                    "required": [
                        "item"
                    ],
                    "shortClassName": "customContentIconsBean",
                    "type": "object",
                    "title": "Custom Content Icons",
                    "description": "\n\nDefines icons that used for displaying the custom content.\n\n\n\n\n\n    {\n      \"item\": {\n        \"width\": 16,\n        \"height\": 16,\n        \"url\": \"/item.png\"\n      }\n    }\n\n\n",
                    "fieldDescription": "\n\nDefines icons used for displaying the content.\n\n"
                },
                "contentViewComponent": {
                    "$ref": "#/definitions/componentReference",
                    "fieldDescription": "\n\nDefines a module for viewing custom content.<br>\n The module referenced must be a <a href=\"../page/\">generalPage</a>.\n\n The view component will get displayed in following places:\n <ul>\n     <li>\n         <b>Search result</b><br>\n         When user clicks the title of a custom content entry in site search result.\n     </li>\n </ul>\n\n"
                },
                "editComponentSubmitButtonLabel": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nDefines the label for submit button on edit component\n\n"
                },
                "editComponentCancelButtonLabel": {
                    "$ref": "#/definitions/i18nProperty",
                    "fieldDescription": "\n\nDefines the label for cancel button on edit component\n\n"
                },
                "breadcrumbs": {
                    "properties": {
                        "relations": {
                            "items": {
                                "properties": {
                                    "name": {
                                        "maxLength": 100,
                                        "type": "string",
                                        "fieldDescription": "\n\nName of the content relation\n\n"
                                    }
                                },
                                "shortClassName": "customContentRelationBean",
                                "type": "object",
                                "title": "Custom Content Relation",
                                "description": "\n\nA reference to a custom content relation\n\n\n\n\n\n    {\n      \"name\": \"worksFor\"\n    }\n\n\n"
                            },
                            "type": "array",
                            "fieldDescription": "\n\nDefines the list of content relations used for generating breadcrumbs<br>\n Following sorting orders will apply:\n <ul>\n     <li><b>Relationships defined in different names</b>: Sorted by the order defined in this field</li>\n     <li><b>Relationships defined in the same name</b>: Sorted by creation time of the relation</li>\n </ul>\n\n"
                        }
                    },
                    "shortClassName": "customContentBreadcrumbsBean",
                    "type": "object",
                    "title": "Custom Content Breadcrumbs",
                    "description": "\n\nDefines the breadcrumbs for this content<br>\n\n <h3>Use Relation API to generate breadcrumbs</h3>\n An add-on can specify multiple content relationships for generating the breadcrumbs.\n Suppose we have <code>ac:add-on-key:employee</code> defined with following breadcrumbs setting:\n <pre><code>\n ...\n \"breadcrumbs\": {\n   \"relations\": [\n     {\n       \"name\": \"worksFor\"\n     }\n   ]\n }\n ...\n </code></pre>\n\n And we have following custom content created in the Confluence:\n <table>\n     <caption style='caption-side:bottom;padding:10px;'>Example custom content for building search breadcrumbs</caption>\n     <tr>\n        <th>Content ID</th>\n        <th>Content Type</th>\n        <th>Title</th>\n     </tr>\n     <tr>\n        <td>1</td>\n        <td>ac:add-on-key:organization</td>\n        <td>Company A</td>\n     </tr>\n     <tr>\n        <td>2</td>\n        <td>ac:add-on-key:organization</td>\n        <td>Company B</td>\n     </tr>\n     <tr>\n        <td>3</td>\n        <td>ac:add-on-key:employee</td>\n        <td>Charlie</td>\n     </tr>\n </table>\n\n By using the <a href=\"https://docs.atlassian.com/confluence/REST/latest/#relation\">Relation API</a> we can create following relations between these content:\n <ul>\n     <li><b>Charlie works for Company A</b>: PUT /rest/relation/worksFor/from/content/3/to/content/1</li>\n     <li><b>Charlie works for Company B</b>: PUT /rest/relation/worksFor/from/content/3/to/content/2</li>\n </ul>\n\n Since we have let <code>ac:add-on-key:employee</code> to use <code>worksFor</code> relation to generate the breadcrumbs.\n Confluence will fetch the relations that were created under name <code>worksFor</code>,\n then display the titles in the creation order of their relations in the search result like this:\n <img src=\"/cloud/connect/images/confluence-quick-search-breadcrumbs.png\" alt=\"Quick search breadcrumbs\" style=\"border:1px solid #999;margin-top:10px;width:500px\">\n\n Similarly the site search will display the breadcrumbs as well:\n <img src=\"/cloud/connect/images/confluence-search-breadcrumbs.png\" alt=\"Quick search breadcrumbs\" style=\"border:1px solid #999;margin-top:10px;width:500px\">\n\n",
                    "fieldDescription": "\n\nDefines the breadcrumbs used in\n <ul>\n     <li>Result of quick search dropdown</li>\n     <li>Result of site search</li>\n </ul>\n\n"
                }
            },
            "required": [
                "icons",
                "contentViewComponent"
            ],
            "shortClassName": "customContentUISupportBean",
            "type": "object",
            "title": "Custom Content UI Support",
            "description": "\n\nDeclares information related for rendering the custom content in the UI. <br>\n Add-ons have the ability to control the UI components for user to view the custom content.\n\n\n\n\n\n    {\n      \"contentViewComponent\": {\n        \"addonKey\": \"addon-key\",\n        \"moduleKey\": \"general-page-module-key\"\n      }\n    }\n\n\n\n\n <h3>View component example</h3>\n Suppose we already defined a general page module like following:\n\n\n\n\n\n    {\n      \"url\": \"/my-general-page?content.plugin={content.plugin}&content.id={content.id}&content.version={content.version}&space.key={space.key}&customParameter={ac.customData}\",\n      \"name\": {\n        \"value\": \"My viewer page\"\n      },\n      \"key\": \"my-viewer\"\n    }\n\n\n\n\n And also the general page is used as a view component in ui support section.\n\n\n\n\n\n    {\n      \"contentViewComponent\": {\n        \"moduleKey\": \"my-viewer\"\n      }\n    }\n\n\n\n\n When user clicks the title of the corresponding custom content in the search result.\n <code>/my-general-page</code> will be rendered in a iframe with following context parameters being passed.<br>\n <ul>\n     <li><code>content.plugin</code>: The content type key of the content. eg: <code>ac:addon-key:module-key</code></li>\n     <li><code>content.id</code>: The id of the content</li>\n     <li><code>content.version</code>: The version of the content</li>\n     <li><code>space.key</code>: The key of the space which content is contained in</li>\n </ul>\n Note, that if an optional custom value is defined in the url string, such as  <code>{ac.customData}</code> in the example above, it will be substituted with the value\n of the <code>ac.customData</code> parameter that will be taken from the Confluence's current URL. Add-on developers can specify any number of custom parameters, provided that they\n have names that follow this convention: <code>ac.parameter_name</code>.\n If more than one custom parameter with the same name is defined in Confluence's current URL, only the first value will be used.\n For additional information on custom parameters see <a href=\"../../context-parameters/#add-on-specific-context-parameters\">Context Parameters</a>.\n\n <h3>Context Parameters</h3>\n View components support Confluence context parameters. When rendering the view component\n the context variables will be passed to the URL that is defined in the corresponding view component module.<br>\n You can retrieve the content or space information with these parameters via Confluence REST API\n and render it according to your needs.<br>\n Please consult <a href=\"../../context-parameters/\">Context Parameters</a> for what parameters are currently supported.\n\n"
        },
        "componentReference": {
            "properties": {
                "addonKey": {
                    "maxLength": 100,
                    "type": "string",
                    "fieldDescription": "\n\nThe add-on key that referenced module was defined in.<br>\n If not present, the module is assumed to be defined within the same add-on.\n\n"
                },
                "moduleKey": {
                    "maxLength": 100,
                    "type": "string",
                    "fieldDescription": "\n\nModule key of the referenced module.\n\n"
                }
            },
            "required": [
                "moduleKey"
            ],
            "shortClassName": "moduleReferenceBean",
            "type": "object",
            "title": "Module Reference",
            "description": "\n\nA reference to a module defined in either this or another add-on\n\n\n\n\n\n    {\n      \"addonKey\": \"addon-key\",\n      \"moduleKey\": \"general-page-module-key\"\n    }\n\n\n"
        },
        "apiSupport": {
            "properties": {
                "bodyType": {
                    "enum": [
                        "storage",
                        "STORAGE",
                        "raw",
                        "RAW"
                    ],
                    "type": "string",
                    "fieldDescription": "\n\nDefines the content body type of this custom content.\n Currently supported content body types are:\n <ul>\n     <li><code>storage</code>: This is Confluence's default storage representation which can be rendered using the <a href=\"https://developer.atlassian.com/cloud/confluence/rest/#api-contentbody-convert-to-post\">Content Body Conversion API</a></li>\n     <li><code>raw</code>: This representation is used for storing raw data in the body that is not storage format, this format is opaque to Confluence</li>\n </ul>\n\n",
                    "defaultValue": "storage"
                },
                "supportedChildTypes": {
                    "items": {
                        "maxLength": 100,
                        "type": "string"
                    },
                    "type": "array",
                    "fieldDescription": "\n\nDefines types that can be contained in this custom content.<br>\n Currently supported content types:\n <ul>\n     <li><code>attachment</code>: This custom content can contain attachment.</li>\n     <li><code>comment</code>: This custom content can contain comment.</li>\n     <li>\n         Any other content type key of defined custom content.<br>\n         Please refer to <a href=\"../custom-content/#content-type-key\">The content type key</a>\n         for how to construct the content type key.\n     </li>\n </ul>\n\n"
                },
                "supportedSpacePermissions": {
                    "items": {
                        "maxLength": 100,
                        "type": "string"
                    },
                    "type": "array",
                    "fieldDescription": "\n\nDefines the space permissions that this custom content supports.\n Allowable values are : <b><code>read, create and delete.</code></b>\n It is required that these permissions be granted through the\n space permissions UI in order to perform the given operation.\n\n Otherwise the default permissions will be used.\n\n"
                },
                "preventDuplicateTitle": {
                    "type": "boolean",
                    "fieldDescription": "\n\nDefines whether Confluence should prevent content with duplicate title from being created in the same space or container.\n\n",
                    "defaultValue": "false"
                },
                "indexing": {
                    "$ref": "#/definitions/indexing",
                    "fieldDescription": "\n\nDefines how this content type will be indexed\n\n"
                },
                "supportedContainerTypes": {
                    "items": {
                        "maxLength": 100,
                        "type": "string"
                    },
                    "type": "array",
                    "fieldDescription": "\n\nDefines types that this custom content can be contained in.<br>\n Currently supported content types:\n <ul>\n     <li><code>space</code>: Treat this custom content as a space directly contained content.</li>\n     <li><code>page</code>: This custom content can be contained in a page.</li>\n     <li><code>blogpost</code>: This custom content can be contained in a blog post.</li>\n     <li>\n         Any other content type of defined custom content.<br>\n         Please refer to <a href=\"../custom-content/#content-type-key\">The content type key</a>\n         for how to construct the content type key.\n     </li>\n </ul>\n\n"
                }
            },
            "required": [
                "supportedContainerTypes"
            ],
            "shortClassName": "customContentAPISupportBean",
            "type": "object",
            "title": "Custom Content API Support",
            "description": "\n\nThis property allows you to specify the container types your custom content can appear in, and its supported child content types.\n It also allows you to enable indexing of your custom content.\n\n\n\n\n\n    {\n      \"bodyType\": \"storage\",\n      \"supportedContainerTypes\": [\n        \"space\",\n        \"page\"\n      ],\n      \"supportedChildTypes\": [\n        \"attachment\",\n        \"comment\"\n      ],\n      \"supportedSpacePermissions\": [],\n      \"preventDuplicateTitle\": false,\n      \"indexing\": {\n        \"enabled\": true\n      }\n    }\n\n\n\n\n <p>In the above example, you'll see we specify content type keys in the <code>supportedContainerTypes</code> and <code>supportedChildTypes</code> fields.\n There are 2 categories of content type you can reference – built-in content and custom content.</p>\n\n <h3>Built-in content types example</h3>\n The following snippet shows the content type we're defining can:\n <ul>\n     <li>Be contained in a <code>space</code> or a <code>page</code></li>\n     <li>Have a child <code>comment</code> or a child <code>attachment</code></li>\n </ul>\n\n\n\n\n\n    {\n      \"bodyType\": \"storage\",\n      \"supportedContainerTypes\": [\n        \"space\",\n        \"page\"\n      ],\n      \"supportedChildTypes\": [\n        \"attachment\",\n        \"comment\"\n      ],\n      \"supportedSpacePermissions\": [],\n      \"preventDuplicateTitle\": false,\n      \"indexing\": {\n        \"enabled\": true\n      }\n    }\n\n\n\n\n\n <h3>Custom content example</h3>\n The following snippet shows the content type we're defining can:\n <ul>\n     <li>Be contained in a content with type <code>type1</code> or <code>type2</code>, defined in an add-on with the key <code>my-first-addon</code></li>\n     <li>Have a child of a content with type <code>type1</code> or <code>type2</code>, defined in an add-on with the key <code>my-second-addon</code></li>\n </ul>\n\n\n\n\n\n    {\n      \"bodyType\": \"storage\",\n      \"supportedContainerTypes\": [\n        \"ac:my-first-addon:type2\",\n        \"ac:my-first-addon:type1\"\n      ],\n      \"supportedChildTypes\": [\n        \"ac:my-second-addon:type1\",\n        \"ac:my-second-addon:type2\"\n      ],\n      \"supportedSpacePermissions\": [],\n      \"preventDuplicateTitle\": false,\n      \"indexing\": {\n        \"enabled\": true\n      }\n    }\n\n\n\n\n <h3>Raw body type custom content example</h3>\n You can define custom content to support a content body with a type of <code>raw</code>.<br>\n This is useful when you want to store, for example, stringified JSON to the content.\n\n\n\n\n\n    {\n      \"bodyType\": \"raw\",\n      \"supportedContainerTypes\": [\n        \"space\"\n      ],\n      \"supportedChildTypes\": [],\n      \"supportedSpacePermissions\": [],\n      \"preventDuplicateTitle\": false,\n      \"indexing\": {\n        \"enabled\": true\n      }\n    }\n\n\n\n\n Content with a raw body looks like this:\n <pre><code>\n {\n     \"title\": \"My title\",\n     \"space\": {\"key\": \"DS\"},\n     \"type\": \"ac:add-on-key:module-key\",\n     \"body\": {\n         \"raw\": {\n             \"value\": \"{\\\"field\\\": \\\"value\\\"}\",\n             \"representation\": \"raw\"\n         }\n     }\n }\n </code></pre>\n\n"
        },
        "indexing": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "fieldDescription": "\n\nDefines whether this macro parameter should be indexed for site search.\n\n",
                    "defaultValue": "false"
                }
            },
            "shortClassName": "macroParameterIndexingBean",
            "type": "object",
            "title": "Macro Parameter Indexing",
            "description": "\n\nDefines how this macro parameter will be indexed for site search\n\n\n\n\n\n    {\n      \"enabled\": true\n    }\n\n\n\n\n <p>The macro parameter indexing property allows apps to hook into the mechanism by which Confluence populates its\n search index for site search. Each time macro is created or updated in Confluence, the value that is stored in\n the macro parameter will be added to the search index.\n The value of this macro parameter will also be used in displaying the excerpt text for search result.</p>\n\n <p>This is useful when the body of the macro is not searchable, for example: macros with <code>bodyType: none</code>.\n The app can still provide meaningful search text for this content by storing the extracted information to\n the macro parameter. The data in this macro parameter will get indexed as is without any modification.</p>\n\n"
        },
        "embeddedStaticContentMacroBean": {
            "properties": {
                "url": {
                    "type": "string",
                    "fieldDescription": "\n\n"
                }
            },
            "required": [
                "url"
            ],
            "shortClassName": "embeddedStaticContentMacroBean",
            "type": "object",
            "title": "Embedded Static Content Macro",
            "description": "\n\nAn embedded reference to a static macro resource.  These macro definitions are a subset of\n a Static Content Macro, defining only what cannot be inferred from the containing dynamic macro.\n\n These embedded static content macros are used to define render mode mappings for your dynamic content macro.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"modules\": {\n        \"dynamicContentMacros\": [\n          {\n            \"renderModes\": {\n              \"pdf\": {\n                \"url\": \"/render-map-pdf\"\n              },\n              \"default\": {\n                \"url\": \"/render-map-static\"\n              }\n            },\n            \"url\": \"/render-map?pageTitle={page.title}\",\n            \"categories\": [],\n            \"outputType\": \"block\",\n            \"bodyType\": \"none\",\n            \"aliases\": [],\n            \"name\": {\n              \"value\": \"Maps\"\n            },\n            \"key\": \"dynamic-macro-example\"\n          }\n        ]\n      }\n    }\n\n\n"
        },
        "link": {
            "properties": {
                "altText": {
                    "maxLength": 1000,
                    "type": "string",
                    "fieldDescription": "\n\nAlternative text that is shown when the element cannot be rendered.\n\n"
                },
                "title": {
                    "maxLength": 1000,
                    "type": "string",
                    "fieldDescription": "\n\nThe title of the link.\n\n"
                },
                "url": {
                    "type": "string",
                    "fieldDescription": "\n\nThe URL of the link. It can be absolute, or relative to the Add-On base URL.\n\n"
                }
            },
            "required": [
                "url"
            ],
            "shortClassName": "linkBean",
            "type": "object",
            "title": "Link",
            "description": "\n\nRepresents a link, its optional title and alternative text.\n\n <h3>Example</h3>\n\n\n\n\n\n    {\n      \"link\": {\n        \"url\": \"/go-somewhere\",\n        \"title\": \"Go Somewhere\",\n        \"altText\": \"somewhere\"\n      }\n    }\n\n\n"
        },
        "autoconvert": {
            "properties": {
                "matchers": {
                    "items": {
                        "$ref": "#/definitions/matchers"
                    },
                    "maxItems": 200,
                    "additionalItems": false,
                    "uniqueItems": false,
                    "type": "array",
                    "fieldDescription": "\n\nThe list of patterns that define what URLs should be matched.\n\n"
                },
                "urlParameter": {
                    "maxLength": 100,
                    "type": "string",
                    "fieldDescription": "\n\nThe name of the macro parameter the matched url will be inserted into.\n\n"
                }
            },
            "required": [
                "urlParameter"
            ],
            "shortClassName": "autoconvertBean",
            "type": "object",
            "title": "Autoconvert",
            "description": "\n\nAutoconvert allows your macro to be inserted into the editor when a recognised URL is pasted in by the user.\n You define recognised URL patterns using 'matchers' which are registered in the editor when your add-on is installed.\n\n When the macro is created in the editor, the URL string that triggered the autoconvert will be captured and inserted\n as a parameter on the macro body. You must define the name of this parameter by providing a string value for 'urlParameter'.\n This allows you to access the URL that triggered the autoconvert.\n\n <p><b>Example</b></p>\n\n This example inserts a macro into the editor when a user pastes in certain simple Facebook links.\n\n\n\n\n\n    {\n      \"renderModes\": {},\n      \"url\": \"/dynamic-macro?url={url}\",\n      \"categories\": [],\n      \"outputType\": \"block\",\n      \"bodyType\": \"none\",\n      \"aliases\": [],\n      \"parameters\": [\n        {\n          \"identifier\": \"url\",\n          \"name\": {\n            \"value\": \"URL\"\n          },\n          \"type\": \"string\",\n          \"required\": false,\n          \"multiple\": false,\n          \"hidden\": false\n        }\n      ],\n      \"autoconvert\": {\n        \"urlParameter\": \"url\",\n        \"matchers\": [\n          {\n            \"pattern\": \"https://www.facebook.com/{}/about\"\n          },\n          {\n            \"pattern\": \"https://www.facebook.com/{}/music\"\n          },\n          {\n            \"pattern\": \"https://www.facebook.com/{}/movies/{}\"\n          }\n        ]\n      },\n      \"name\": {\n        \"value\": \"Dynamic Macro With Autoconvert\"\n      },\n      \"key\": \"dynamic-macro-with-autoconvert\"\n    }\n\n\n"
        },
        "matchers": {
            "properties": {
                "pattern": {
                    "maxLength": 1024,
                    "type": "string",
                    "fieldDescription": "\n\nThe pattern is a string that defines a single URL to match.\n\n"
                }
            },
            "required": [
                "pattern"
            ],
            "shortClassName": "matcherBean",
            "type": "object",
            "title": "Matcher",
            "description": "\n\nMatchers define a URL string as part of an Autoconvert definition.\n\n Wildcards (parts of the url that should always match, such as as a unique ID) can be defined using a single open and close\n curly bracket such as '{}'. Use a new brace pair for each separate wildcard.\n\n Keep in mind that you'll need to define a separate matcher for each relevant internet protocol (such as http vs https).\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"pattern\": \"https://www.facebook.com/{}/about\"\n    }\n\n\n"
        },
        "imagePlaceholder": {
            "properties": {
                "applyChrome": {
                    "type": "boolean",
                    "fieldDescription": "\n\nSet to true if the image should have the macro placeholder chrome applied to it.\n\n",
                    "defaultValue": "false"
                },
                "width": {
                    "type": "integer",
                    "fieldDescription": "\n\nThe width in pixels of the image placeholder. Defaults to the natural image width if not specified.\n\n"
                },
                "url": {
                    "type": "string",
                    "fieldDescription": "\n\nThe URL of the image placeholder. Your image placeholder needs to be hosted remotely at a web-accessible location.\n You can specify the URL as an absolute URL or relative to the add-on's base URL.<br>\n\n The url here doesn't support context parameters. However all the macro parameters will be passed as query parameters to the request.<br>\n You can use these parameters to dynamically generate the placeholder image.<br>\n\n Suppose you have a macro defined like this:\n\n\n\n\n\n    {\n      \"dynamicContentMacros\": {\n        \"renderModes\": {},\n        \"url\": \"/my-macro\",\n        \"categories\": [],\n        \"outputType\": \"block\",\n        \"bodyType\": \"none\",\n        \"aliases\": [],\n        \"parameters\": [\n          {\n            \"identifier\": \"param1\",\n            \"name\": {\n              \"value\": \"Parameter 1\"\n            },\n            \"type\": \"string\",\n            \"required\": false,\n            \"multiple\": false,\n            \"hidden\": false\n          },\n          {\n            \"identifier\": \"param2\",\n            \"name\": {\n              \"value\": \"Parameter 2\"\n            },\n            \"type\": \"string\",\n            \"required\": false,\n            \"multiple\": false,\n            \"hidden\": false\n          }\n        ],\n        \"imagePlaceholder\": {\n          \"url\": \"/images/placeholder.png\",\n          \"applyChrome\": false\n        },\n        \"name\": {\n          \"value\": \"My macro with placeholder\"\n        },\n        \"key\": \"my-macro-key\"\n      }\n    }\n\n\n\n\n The Confluence editor will pass the parameter values when requesting the placeholder image:\n <code>/images/placeholder.png?param1=value1&amp;param2=value2</code>\n\n"
                },
                "height": {
                    "type": "integer",
                    "fieldDescription": "\n\nThe height in pixels of the image placeholder. Defaults to the natural image height if not specified.\n\n"
                }
            },
            "required": [
                "url"
            ],
            "shortClassName": "imagePlaceholderBean",
            "type": "object",
            "title": "Image Placeholder",
            "description": "\n\nDefines a macro image placeholder to display in the Confluence editor.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"imagePlaceholder\": {\n        \"width\": 100,\n        \"height\": 25,\n        \"url\": \"/images/placeholder.png\",\n        \"applyChrome\": true\n      }\n    }\n\n\n"
        },
        "lookAndFeel": {
            "properties": {
                "bordersAndDividers": {
                    "$ref": "#/definitions/bordersAndDividers",
                    "fieldDescription": "\n\nDeclares styles to be applied on borders and dividers\n\n"
                },
                "headings": {
                    "$ref": "#/definitions/headings",
                    "fieldDescription": "\n\nDeclares styles to be applied on the headings of the content (HTML h1 to h6 tags)\n\n"
                },
                "header": {
                    "$ref": "#/definitions/header",
                    "fieldDescription": "\n\nDeclares styles to be applied on the header bar\n\n"
                },
                "links": {
                    "$ref": "#/definitions/links",
                    "fieldDescription": "\n\nDeclares styles to be applied on the links in the content (HTML a tags)\n\n"
                },
                "menus": {
                    "$ref": "#/definitions/menus",
                    "fieldDescription": "\n\nDeclares styles to be applied on menus, e.g. Space Tools menu, Action menu (expanding at the ellipsis)\n\n"
                },
                "content": {
                    "$ref": "#/definitions/content",
                    "fieldDescription": "\n\nDeclares styles to be applied on the content, including Page Content, Blogpost Content, Page Collector, Blogpost Collector\n\n"
                }
            },
            "required": [
                "bordersAndDividers",
                "headings",
                "header",
                "links",
                "menus",
                "content"
            ],
            "shortClassName": "lookAndFeelBean",
            "type": "object",
            "title": "LookAndFeel",
            "description": "\n\nDefines custom look and feel experience.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"headings\": {\n        \"color\": \"#333333\"\n      },\n      \"links\": {\n        \"color\": \"#3572B0\"\n      },\n      \"menus\": {\n        \"hoverOrFocus\": {\n          \"backgroundColor\": \"#3873AE\"\n        },\n        \"color\": \"#000000\"\n      },\n      \"bordersAndDividers\": {\n        \"color\": \"#0D0E0E\"\n      },\n      \"header\": {\n        \"backgroundColor\": \"#661F2D\",\n        \"button\": {\n          \"backgroundColor\": \"#894E59\",\n          \"color\": \"#FFFFFF\"\n        },\n        \"primaryNavigation\": {\n          \"hoverOrFocus\": {\n            \"backgroundColor\": \"#863647\",\n            \"color\": \"#FFFFFF\"\n          },\n          \"color\": \"#FFFFFF\"\n        },\n        \"secondaryNavigation\": {\n          \"hoverOrFocus\": {\n            \"backgroundColor\": \"#863647\",\n            \"color\": \"#FFFFFF\"\n          },\n          \"color\": \"#000000\"\n        },\n        \"search\": {\n          \"backgroundColor\": \"#9A636B\",\n          \"color\": \"#FFFFFF\"\n        }\n      },\n      \"content\": {\n        \"screen\": {\n          \"layer\": {\n            \"width\": \"100%\",\n            \"height\": \"250px\",\n            \"backgroundImage\": \"url('http://path/to/img/skyline.jpg')\",\n            \"backgroundSize\": \"cover\",\n            \"backgroundRepeat\": \"no-repeat\"\n          },\n          \"gutterTop\": \"20px\",\n          \"gutterRight\": \"small\",\n          \"gutterBottom\": \"10px\",\n          \"gutterLeft\": \"small\",\n          \"background\": \"linear-gradient(45deg, rgba(176,104,112,1) 0%, rgba(244,212,216,1) 100%)\"\n        },\n        \"container\": {\n          \"padding\": \"0 20px\",\n          \"borderRadius\": \"10px\",\n          \"background\": \"#F4D4D8\"\n        },\n        \"header\": {\n          \"padding\": \"20px 0 90px 20px\",\n          \"borderRadius\": \"5px 5px 0 0\",\n          \"backgroundColor\": \"rgba(0, 0, 0, 0.2)\"\n        },\n        \"body\": {\n          \"padding\": \"10px\",\n          \"borderRadius\": \"0 0 5px 5px\",\n          \"background\": \"#FFFFFF\"\n        }\n      }\n    }\n\n\n"
        },
        "bordersAndDividers": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the color to be applied to the borders and dividers.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "color"
            ],
            "shortClassName": "bordersAndDividersBean",
            "type": "object",
            "title": "BordersAndDividers",
            "description": "\n\nDefines styles to be applied on the borders and dividers.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"color\": \"#0D0E0E\"\n    }\n\n\n"
        },
        "headings": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the headings of the content (HTML h1 to h6 tags).<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "color"
            ],
            "shortClassName": "headingsBean",
            "type": "object",
            "title": "Headings",
            "description": "\n\nDefines styles to be applied on the headings of the content (HTML h1 to b tags).\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"color\": \"#333333\"\n    }\n\n\n"
        },
        "header": {
            "properties": {
                "button": {
                    "$ref": "#/definitions/button",
                    "fieldDescription": "\n\nDeclares styles to be applied on the button on the header\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the header background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "primaryNavigation": {
                    "$ref": "#/definitions/primaryNavigation",
                    "fieldDescription": "\n\nDeclares styles to be applied on the primary navigation\n\n"
                },
                "search": {
                    "$ref": "#/definitions/search",
                    "fieldDescription": "\n\nDeclares styles to be applied on the search field\n\n"
                },
                "secondaryNavigation": {
                    "$ref": "#/definitions/secondaryNavigation",
                    "fieldDescription": "\n\nDeclares styles to be applied on the secondary navigation\n\n"
                }
            },
            "required": [
                "button",
                "backgroundColor",
                "primaryNavigation",
                "search",
                "secondaryNavigation"
            ],
            "shortClassName": "headerBean",
            "type": "object",
            "title": "Header",
            "description": "\n\nDefines styles to be applied on the header.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"backgroundColor\": \"#661F2D\",\n      \"button\": {\n        \"backgroundColor\": \"#894E59\",\n        \"color\": \"#FFFFFF\"\n      },\n      \"primaryNavigation\": {\n        \"hoverOrFocus\": {\n          \"backgroundColor\": \"#863647\",\n          \"color\": \"#FFFFFF\"\n        },\n        \"color\": \"#FFFFFF\"\n      },\n      \"secondaryNavigation\": {\n        \"hoverOrFocus\": {\n          \"backgroundColor\": \"#863647\",\n          \"color\": \"#FFFFFF\"\n        },\n        \"color\": \"#000000\"\n      },\n      \"search\": {\n        \"backgroundColor\": \"#9A636B\",\n        \"color\": \"#FFFFFF\"\n      }\n    }\n\n\n"
        },
        "button": {
            "properties": {
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the color to be applied to the button background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the color to be applied to the button text.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "backgroundColor",
                "color"
            ],
            "shortClassName": "buttonBean",
            "type": "object",
            "title": "Button",
            "description": "\n\nDefines styles to be applied on the button.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"backgroundColor\": \"#894E59\",\n      \"color\": \"#FFFFFF\"\n    }\n\n\n"
        },
        "primaryNavigation": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the color to be applied to the button background on the navigation.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "hoverOrFocus": {
                    "$ref": "#/definitions/hoverOrFocus",
                    "fieldDescription": "\n\nDeclares the style to be applied to the navigation when it is hovered or focused.\n\n"
                }
            },
            "required": [
                "color",
                "hoverOrFocus"
            ],
            "shortClassName": "primaryNavigationBean",
            "type": "object",
            "title": "PrimaryNavigation",
            "description": "\n\nDefines styles to be applied on the primary navigation.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"hoverOrFocus\": {\n        \"backgroundColor\": \"#863647\",\n        \"color\": \"#FFFFFF\"\n      },\n      \"color\": \"#FFFFFF\"\n    }\n\n\n"
        },
        "hoverOrFocus": {
            "properties": {
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the background of the component when it is hovered or focused.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the text in the component when it is hovered or focused.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "backgroundColor"
            ],
            "shortClassName": "hoverOrFocusBean",
            "type": "object",
            "description": "\n\n"
        },
        "search": {
            "properties": {
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the background of the search field.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the text in the search field.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "backgroundColor",
                "color"
            ],
            "shortClassName": "searchFieldBean",
            "type": "object",
            "title": "Search",
            "description": "\n\nDefines styles to be applied on the search field.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"backgroundColor\": \"#9A636B\",\n      \"color\": \"#FFFFFF\"\n    }\n\n\n"
        },
        "secondaryNavigation": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the color to be applied to the button background on the navigation.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "hoverOrFocus": {
                    "$ref": "#/definitions/hoverOrFocus",
                    "fieldDescription": "\n\nDeclares the style to be applied to the navigation when it is hovered or focused.\n\n"
                }
            },
            "required": [
                "color",
                "hoverOrFocus"
            ],
            "shortClassName": "secondaryNavigationBean",
            "type": "object",
            "title": "SecondaryNavigation",
            "description": "\n\nDefines styles to be applied on the secondary navigation.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"hoverOrFocus\": {\n        \"backgroundColor\": \"#863647\",\n        \"color\": \"#FFFFFF\"\n      },\n      \"color\": \"#000000\"\n    }\n\n\n"
        },
        "links": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the links.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                }
            },
            "required": [
                "color"
            ],
            "shortClassName": "linksBean",
            "type": "object",
            "title": "Links",
            "description": "\n\nDefines styles to be applied on the links.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"color\": \"#3572B0\"\n    }\n\n\n"
        },
        "menus": {
            "properties": {
                "color": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied on the text in the menus.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "hoverOrFocus": {
                    "$ref": "#/definitions/hoverOrFocus",
                    "fieldDescription": "\n\nDeclares style to be applied on the menu when it is hovered or focused.\n\n"
                }
            },
            "required": [
                "color",
                "hoverOrFocus"
            ],
            "shortClassName": "menusBean",
            "type": "object",
            "title": "Menus",
            "description": "\n\nDefines styles to be applied on menus.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"hoverOrFocus\": {\n        \"backgroundColor\": \"#3873AE\"\n      },\n      \"color\": \"#000000\"\n    }\n\n\n"
        },
        "content": {
            "properties": {
                "container": {
                    "$ref": "#/definitions/container",
                    "fieldDescription": "\n\nDeclares styles to be applied on the container of content view\n\n"
                },
                "screen": {
                    "$ref": "#/definitions/screen",
                    "fieldDescription": "\n\nDeclares styles to be applied on the underlay of content view\n\n"
                },
                "header": {
                    "$ref": "#/definitions/contentHeader",
                    "fieldDescription": "\n\nDeclares styles to be applied on the header of content view\n\n"
                },
                "body": {
                    "$ref": "#/definitions/body",
                    "fieldDescription": "\n\nDeclares styles to be applied on the body of content view\n\n"
                }
            },
            "required": [
                "container",
                "screen",
                "header",
                "body"
            ],
            "shortClassName": "contentBean",
            "type": "object",
            "title": "Content",
            "description": "\n\nDefines styles to be applied on the content view.\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"screen\": {\n        \"layer\": {\n          \"width\": \"100%\",\n          \"height\": \"250px\",\n          \"backgroundImage\": \"url('http://path/to/img/skyline.jpg')\",\n          \"backgroundSize\": \"cover\",\n          \"backgroundRepeat\": \"no-repeat\"\n        },\n        \"gutterTop\": \"20px\",\n        \"gutterRight\": \"small\",\n        \"gutterBottom\": \"10px\",\n        \"gutterLeft\": \"small\",\n        \"background\": \"linear-gradient(45deg, rgba(176,104,112,1) 0%, rgba(244,212,216,1) 100%)\"\n      },\n      \"container\": {\n        \"padding\": \"0 20px\",\n        \"borderRadius\": \"10px\",\n        \"background\": \"#F4D4D8\"\n      },\n      \"header\": {\n        \"padding\": \"20px 0 90px 20px\",\n        \"borderRadius\": \"5px 5px 0 0\",\n        \"backgroundColor\": \"rgba(0, 0, 0, 0.2)\"\n      },\n      \"body\": {\n        \"padding\": \"10px\",\n        \"borderRadius\": \"0 0 5px 5px\",\n        \"background\": \"#FFFFFF\"\n      }\n    }\n\n\n"
        },
        "container": {
            "properties": {
                "backgroundClip": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background clip property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip\">background-clip</a> MDN reference for details.\n\n"
                },
                "padding": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the padding property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied to the content background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "backgroundAttachment": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background attachment property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment\">background-attachment</a> MDN reference for details.\n\n"
                },
                "borderRadius": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the border radius property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "background": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background shorthand property to set all the background properties in one declaration.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en/docs/Web/CSS/background\">background</a> MDN reference for details.\n\n"
                },
                "backgroundImage": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background image property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-image\">background-image</a> MDN reference for details.\n\n"
                },
                "backgroundSize": {
                    "pattern": "auto|cover|contain|initial|inherit|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background repeat property to be applied for the content view.<br>\n Values must contain \"auto\", \"cover\", \"contain\", \"initial\", \"inherit\", length or percentage.<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-size\">background-size</a> MDN reference for details.\n\n"
                },
                "backgroundPosition": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background position property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position\">background-position</a> MDN reference for details.\n\n"
                },
                "backgroundBlendMode": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background blend mode property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode\">background-blend-more</a> MDN reference for details.\n\n"
                },
                "backgroundRepeat": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background size property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\">background-repeat</a> MDN reference for details.\n\n"
                },
                "backgroundOrigin": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background origin property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin\">background-origin</a> MDN reference for details.\n\n"
                }
            },
            "required": [
                "padding",
                "borderRadius"
            ],
            "shortClassName": "containerBean",
            "type": "object",
            "title": "Container",
            "description": "\n\n<p>\n  Defines styles to be applied to the container of content view.\n </p>\n <p>\n  The supported properties include shorthand <i>background</i> and all CSS background properties.\n  The keys are the camelCased versions of corresponding CSS properties, like <i>backgroundImage</i>,\n  <i>backgroundColor</i>, <i>backgroundSize</i>, <i>backgroundPosition</i>, <i>backgroundRepeat</i>,\n  <i>backgroundClip</i>, <i>backgroundOrigin</i>, <i>backgroundAttachment</i>, and <i>backgroundBlendMode</i>.\n </p>\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"padding\": \"0 20px\",\n      \"borderRadius\": \"10px\",\n      \"background\": \"#F4D4D8\"\n    }\n\n\n"
        },
        "screen": {
            "properties": {
                "gutterTop": {
                    "pattern": "none|default|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the gutter top property to be applied on the content view.<br>\n The valid values include \"none\", \"default\", length or percentage.\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied to the content background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "backgroundAttachment": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background attachment property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment\">background-attachment</a> MDN reference for details.\n\n"
                },
                "backgroundImage": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background image property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-image\">background-image</a> MDN reference for details.\n\n"
                },
                "layer": {
                    "$ref": "#/definitions/layer",
                    "fieldDescription": "\n\n"
                },
                "gutterRight": {
                    "pattern": "none|default|small|medium|large",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the gutter right property to be applied on the content view.<br>\n The valid values include \"none\", \"default\", \"small\", \"medium\", \"large\".<br>\n\n"
                },
                "gutterLeft": {
                    "pattern": "none|default|small|medium|large",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the gutter left property to be applied on the content view.<br>\n The valid values include \"none\", \"default\", \"small\", \"medium\", \"large\".\n\n"
                },
                "backgroundClip": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background clip property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip\">background-clip</a> MDN reference for details.\n\n"
                },
                "background": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background shorthand property to set all the background properties in one declaration.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en/docs/Web/CSS/background\">background</a> MDN reference for details.\n\n"
                },
                "backgroundSize": {
                    "pattern": "auto|cover|contain|initial|inherit|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background repeat property to be applied for the content view.<br>\n Values must contain \"auto\", \"cover\", \"contain\", \"initial\", \"inherit\", length or percentage.<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-size\">background-size</a> MDN reference for details.\n\n"
                },
                "backgroundPosition": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background position property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position\">background-position</a> MDN reference for details.\n\n"
                },
                "backgroundBlendMode": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background blend mode property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode\">background-blend-more</a> MDN reference for details.\n\n"
                },
                "backgroundRepeat": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background size property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\">background-repeat</a> MDN reference for details.\n\n"
                },
                "backgroundOrigin": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background origin property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin\">background-origin</a> MDN reference for details.\n\n"
                },
                "gutterBottom": {
                    "pattern": "none|default|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the gutter bottom property to be applied on the content view.<br>\n The valid values include \"none\", \"default\", length or percentage.\n\n"
                }
            },
            "required": [
                "gutterRight",
                "gutterLeft",
                "gutterTop",
                "gutterBottom"
            ],
            "shortClassName": "screenBean",
            "type": "object",
            "title": "Screen",
            "description": "\n\n<p>\n  Defines styles to be applied on the underlay of content view.\n </p>\n <p>\n  The supported properties include shorthand <i>background</i> and all CSS background element properties.\n  The keys are the camelCased versions of corresponding CSS properties, like <i>backgroundImage</i>,\n  <i>backgroundColor</i>, <i>backgroundSize</i>, <i>backgroundPosition</i>, <i>backgroundRepeat</i>,\n  <i>backgroundClip</i>, <i>backgroundOrigin</i>, <i>backgroundAttachment</i>, and <i>backgroundBlendMode</i>.\n </p>\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"layer\": {\n        \"width\": \"100%\",\n        \"height\": \"250px\",\n        \"backgroundImage\": \"url('http://path/to/img/skyline.jpg')\",\n        \"backgroundSize\": \"cover\",\n        \"backgroundRepeat\": \"no-repeat\"\n      },\n      \"gutterTop\": \"20px\",\n      \"gutterRight\": \"small\",\n      \"gutterBottom\": \"10px\",\n      \"gutterLeft\": \"small\",\n      \"background\": \"linear-gradient(45deg, rgba(176,104,112,1) 0%, rgba(244,212,216,1) 100%)\"\n    }\n\n\n"
        },
        "layer": {
            "properties": {
                "backgroundClip": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background clip property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip\">background-clip</a> MDN reference for details.\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied to the content background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "backgroundAttachment": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background attachment property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment\">background-attachment</a> MDN reference for details.\n\n"
                },
                "background": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background shorthand property to set all the background properties in one declaration.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en/docs/Web/CSS/background\">background</a> MDN reference for details.\n\n"
                },
                "backgroundImage": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background image property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-image\">background-image</a> MDN reference for details.\n\n"
                },
                "width": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the width property to be applied on the layer of underlay of content view.<br>\n The format of inputs should be in CSS style where the input has only one element\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "backgroundSize": {
                    "pattern": "auto|cover|contain|initial|inherit|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background repeat property to be applied for the content view.<br>\n Values must contain \"auto\", \"cover\", \"contain\", \"initial\", \"inherit\", length or percentage.<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-size\">background-size</a> MDN reference for details.\n\n"
                },
                "backgroundPosition": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background position property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position\">background-position</a> MDN reference for details.\n\n"
                },
                "backgroundBlendMode": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background blend mode property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode\">background-blend-more</a> MDN reference for details.\n\n"
                },
                "backgroundRepeat": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background size property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\">background-repeat</a> MDN reference for details.\n\n"
                },
                "backgroundOrigin": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background origin property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin\">background-origin</a> MDN reference for details.\n\n"
                },
                "height": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the height property to be applied on the layer of underlay of content view.<br>\n The format of inputs should be in CSS style where the input has only one element\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                }
            },
            "required": [
                "width",
                "height"
            ],
            "shortClassName": "layerScreenBean",
            "type": "object",
            "title": "Layer",
            "description": "\n\n<p>\n  Defines styles to be applied on the layer of the underlay of content view.\n </p>\n <p>\n  The supported properties include shorthand <i>background</i> and all CSS background properties.\n  The keys are the camelCased versions of corresponding CSS properties, like <i>backgroundImage</i>,\n  <i>backgroundColor</i>, <i>backgroundSize</i>, <i>backgroundPosition</i>, <i>backgroundRepeat</i>,\n  <i>backgroundClip</i>, <i>backgroundOrigin</i>, <i>backgroundAttachment</i>, and <i>backgroundBlendMode</i>.\n </p>\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"width\": \"100%\",\n      \"height\": \"250px\",\n      \"backgroundImage\": \"url('http://path/to/img/skyline.jpg')\",\n      \"backgroundSize\": \"cover\",\n      \"backgroundRepeat\": \"no-repeat\"\n    }\n\n\n"
        },
        "contentHeader": {
            "properties": {
                "backgroundClip": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background clip property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip\">background-clip</a> MDN reference for details.\n\n"
                },
                "padding": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the padding property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied to the content background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "backgroundAttachment": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background attachment property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment\">background-attachment</a> MDN reference for details.\n\n"
                },
                "borderRadius": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the border radius property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "background": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background shorthand property to set all the background properties in one declaration.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en/docs/Web/CSS/background\">background</a> MDN reference for details.\n\n"
                },
                "backgroundImage": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background image property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-image\">background-image</a> MDN reference for details.\n\n"
                },
                "backgroundSize": {
                    "pattern": "auto|cover|contain|initial|inherit|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background repeat property to be applied for the content view.<br>\n Values must contain \"auto\", \"cover\", \"contain\", \"initial\", \"inherit\", length or percentage.<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-size\">background-size</a> MDN reference for details.\n\n"
                },
                "backgroundPosition": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background position property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position\">background-position</a> MDN reference for details.\n\n"
                },
                "backgroundBlendMode": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background blend mode property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode\">background-blend-more</a> MDN reference for details.\n\n"
                },
                "backgroundRepeat": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background size property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\">background-repeat</a> MDN reference for details.\n\n"
                },
                "backgroundOrigin": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background origin property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin\">background-origin</a> MDN reference for details.\n\n"
                }
            },
            "required": [
                "padding",
                "borderRadius"
            ],
            "shortClassName": "contentHeaderBean",
            "type": "object",
            "title": "ContentHeader",
            "description": "\n\n<p>\n  Defines styles to be applied on the header of content view.\n </p>\n <p>\n  The supported properties include shorthand <i>background</i> and all CSS background properties.\n  The keys are the camelCased versions of corresponding CSS properties, like <i>backgroundImage</i>,\n  <i>backgroundColor</i>, <i>backgroundSize</i>, <i>backgroundPosition</i>, <i>backgroundRepeat</i>,\n  <i>backgroundClip</i>, <i>backgroundOrigin</i>, <i>backgroundAttachment</i>, and <i>backgroundBlendMode</i>.\n </p>\n\n <h2>Example</h2>\n\n\n\n\n\n    {\n      \"padding\": \"20px 0 90px 20px\",\n      \"borderRadius\": \"5px 5px 0 0\",\n      \"backgroundColor\": \"rgba(0, 0, 0, 0.2)\"\n    }\n\n\n"
        },
        "body": {
            "properties": {
                "backgroundClip": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background clip property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip\">background-clip</a> MDN reference for details.\n\n"
                },
                "padding": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the padding property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "backgroundColor": {
                    "pattern": "^#([\\da-fA-F]){3}$|^#([\\da-fA-F]){6}$|^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$|^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$|^rgb\\((\\d+)%,\\s*(\\d+)%,\\s*(\\d+)%\\)$|^hsl\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*\\)$|^hsla\\(\\s*(0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0|[1-9]\\d?|100)%)\\s*,\\s*((0.[0-9]*)|[01])\\s*\\)$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares color to be applied to the content background.<br>\n The supported values include RGB(A), HSL(A), HEX codes, except for color names.<br>\n\n"
                },
                "backgroundAttachment": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background attachment property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment\">background-attachment</a> MDN reference for details.\n\n"
                },
                "borderRadius": {
                    "pattern": "^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the border radius property to be applied on the container, body, header of content view.<br>\n The format of inputs should be in CSS style where the input can have from one to four elements\n followed by length units (em, ex, in, cm, mm, pt, pc, px) or percentage (%).<br>\n\n"
                },
                "background": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background shorthand property to set all the background properties in one declaration.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en/docs/Web/CSS/background\">background</a> MDN reference for details.\n\n"
                },
                "backgroundImage": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background image property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-image\">background-image</a> MDN reference for details.\n\n"
                },
                "backgroundSize": {
                    "pattern": "auto|cover|contain|initial|inherit|^(0|(\\d*)(em|ex|in|cm|mm|pt|pc|px|%))( 0| (\\d*)(em|ex|in|cm|mm|pt|pc|px|%)){0,3}$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background repeat property to be applied for the content view.<br>\n Values must contain \"auto\", \"cover\", \"contain\", \"initial\", \"inherit\", length or percentage.<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-size\">background-size</a> MDN reference for details.\n\n"
                },
                "backgroundPosition": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background position property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position\">background-position</a> MDN reference for details.\n\n"
                },
                "backgroundBlendMode": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background blend mode property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode\">background-blend-more</a> MDN reference for details.\n\n"
                },
                "backgroundRepeat": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background size property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat\">background-repeat</a> MDN reference for details.\n\n"
                },
                "backgroundOrigin": {
                    "pattern": "^((?![;|}]).)*$",
                    "type": "string",
                    "fieldDescription": "\n\nDeclares the CSS background origin property to be applied for the content view.<br>\n Values must not contain semi-colon \";\" and curly bracket \"}\".<br>\n See the <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin\">background-origin</a> MDN reference for details.\n\n"
                }
            },
            "required": [
                "padding",
                "borderRadius"
            ],
            "shortClassName": "contentBodyBean",
            "type": "object",
            "title": "Body",
            "description": "\n\n<p>\n  Defines styles to be applied on the body of content view.\n </p>\n <p>\n  The supported properties include <i>background</i> shorthand property and all CSS background element properties.\n  The keys are the camelCased versions of corresponding CSS properties, like <i>backgroundImage</i>,\n  <i>backgroundColor</i>, <i>backgroundSize</i>, <i>backgroundPosition</i>, <i>backgroundRepeat</i>,\n  <i>backgroundClip</i>, <i>backgroundOrigin</i>, <i>backgroundAttachment</i>, and <i>backgroundBlendMode</i>.\n </p>\n\n <p><b>Example</b></p>\n\n\n\n\n\n    {\n      \"padding\": \"10px\",\n      \"borderRadius\": \"0 0 5px 5px\",\n      \"background\": \"#FFFFFF\"\n    }\n\n\n"
        },
        "protocolEndpoint": {
            "type": "object",
            "additionalProperties": false,
            "description": "A protocol endpoint that can be invoked to perform a task.",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "title": "endpoint",
                    "description": "The key of the endpoint that should be invoked.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9-._]+$"
                },
                "streaming": {
                    "type": "boolean",
                    "title": "streaming",
                    "default": false,
                    "description": "Whether the endpoint supports streaming capability."
                }
            },
            "required": [
                "endpoint"
            ]
        },
        "ExternalAuthProvider": {
            "type": "string",
            "description": "A key referencing authentication provider. This will be utilised to authenticate end-users and match with external users.",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9-._]+$"
        },
        "FormProperty": {
            "type": "object",
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key identifying the form property."
                },
                "label": {
                    "type": "string",
                    "description": "Label displayed to the admin."
                },
                "placeholder": {
                    "type": "string",
                    "description": "Placeholder text displayed to the admin."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "boolean"
                    ],
                    "description": "The type of the property."
                },
                "isRequired": {
                    "type": "boolean",
                    "description": "Whether the property is required. (default: false)"
                },
                "isSensitive": {
                    "type": "boolean",
                    "description": "Whether the property is sensitive. (default: false)"
                },
                "hideInEditView": {
                    "type": "boolean",
                    "description": "Whether the property is hidden in the edit view. (default: false)"
                }
            },
            "required": [
                "key",
                "label",
                "type"
            ],
            "additionalProperties": false
        },
        "FormSection": {
            "type": "object",
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key identifying the form property section."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "header"
                    ],
                    "description": "The type of the section."
                },
                "title": {
                    "type": "string",
                    "description": "The title of the section."
                },
                "description": {
                    "type": "string",
                    "description": "The description of the section."
                },
                "properties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FormProperty"
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "The properties of the section."
                }
            },
            "required": [
                "key",
                "type",
                "title",
                "description",
                "properties"
            ],
            "additionalProperties": false
        }
    },
    "additionalProperties": false,
    "type": "object",
    "properties": {
        "app": {
            "$ref": "#/definitions/AppSchema",
            "title": "app"
        },
        "connectModules": {
            "$ref": "#/definitions/ConnectModuleSchema",
            "title": "connectModules"
        },
        "modules": {
            "$ref": "#/definitions/ModuleSchema",
            "title": "modules"
        },
        "permissions": {
            "$ref": "#/definitions/AppPermissionsSchema",
            "title": "permissions"
        },
        "resources": {
            "$ref": "#/definitions/HostedResourcesSchema",
            "title": "resources"
        },
        "remotes": {
            "$ref": "#/definitions/RemotesSchema",
            "title": "remotes"
        },
        "providers": {
            "$ref": "#/definitions/ProvidersSchema",
            "title": "providers"
        },
        "environment": {
            "$ref": "#/definitions/EnvironmentSchema",
            "title": "environment"
        },
        "translations": {
            "$ref": "#/definitions/TranslationsSchema",
            "title": "translations"
        },
        "services": {
            "$ref": "#/definitions/ServicesSchema",
            "title": "services"
        },
        "overrides": {
            "$ref": "#/definitions/ManifestOverridesSchema",
            "title": "ManifestOverrides"
        }
    },
    "required": [
        "app"
    ]
}
