{
    "$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": {
                        "snapshots": {
                            "default": true,
                            "description": "Whether a snapshot of the app is taken at deployment time. Default value of true. This option only takes effect with the \"sandbox\" runtime.",
                            "title": "snapshots",
                            "type": "boolean"
                        },
                        "name": {
                            "default": "sandbox",
                            "description": "Name of the runtime to use for app execution.",
                            "title": "name",
                            "type": "string",
                            "enum": [
                                "sandbox",
                                "nodejs18.x"
                            ]
                        }
                    },
                    "title": "runtime",
                    "type": "object"
                },
                "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."
                        }
                    }
                },
                "features": {
                    "additionalProperties": false,
                    "type": "object",
                    "title": "features",
                    "description": "Features related to app",
                    "properties": {
                        "autoUserConsent": {
                            "type": "boolean",
                            "default": false,
                            "title": "autoUserConsent",
                            "description": "Whether user consent should be automatic. If set to false or no value is specified for this property in the manifest, user consent will be interactive."
                        }
                    }
                },
                "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",
                                "oauth2"
                            ]
                        }
                    }
                },
                "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": {
                        "extraFiles": {
                            "description": "A list of files to include in the Forge app package.",
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "title": "package",
                    "type": "object"
                }
            },
            "required": [
                "id"
            ],
            "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"
                                    },
                                    "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"
                                    },
                                    "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,
                        "properties": {
                            "function": {
                                "$ref": "#/definitions/ExtensionKey",
                                "description": "The key of the function that should be invoked for this webtrigger.",
                                "title": "function",
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "consumer": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "properties": {
                            "queue": {
                                "title": "queue",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "resolver": {
                                "additionalProperties": false,
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "method": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    }
                                },
                                "required": [
                                    "function",
                                    "method"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "queue",
                            "resolver",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "scheduledTrigger": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": false,
                        "properties": {
                            "foo": {
                                "title": "foo",
                                "type": "string"
                            },
                            "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": [
                                    "hour",
                                    "day",
                                    "week"
                                ],
                                "title": "interval",
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "function",
                            "interval",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "function": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": true,
                        "description": "A Forge Function definition.",
                        "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"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "handler",
                            "key"
                        ],
                        "type": "object",
                        "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.",
                        "properties": {
                            "remote": {
                                "description": "key for the remotes definition",
                                "maxLength": 255,
                                "minLength": 1,
                                "pattern": "^[a-zA-Z0-9-_]+$",
                                "type": "string"
                            },
                            "route": {
                                "type": "object",
                                "properties": {
                                    "path": {
                                        "type": "string",
                                        "description": "Path of the remote endpoint to invoke"
                                    }
                                },
                                "required": [
                                    "path"
                                ]
                            },
                            "auth": {
                                "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"
                                            }
                                        }
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "route",
                            "remote",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "remote": {
                    "type": "array",
                    "items": {
                        "$schema": "http://json-schema.org/draft-07/schema#",
                        "additionalProperties": true,
                        "description": "A Forge Remote definition.",
                        "properties": {
                            "baseUrl": {
                                "type": "string"
                            },
                            "operations": {
                                "type": "array",
                                "items": {
                                    "enum": [
                                        "storage",
                                        "other",
                                        "compute"
                                    ]
                                },
                                "minItems": 1
                            },
                            "storage": {
                                "type": "object",
                                "properties": {
                                    "inScopeEUD": {
                                        "type": "boolean"
                                    }
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "baseUrl",
                            "key"
                        ],
                        "type": "object",
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "macro": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 10000
                                    },
                                    "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-_]+$"
                                            }
                                        }
                                    },
                                    "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"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 10000
                                    },
                                    "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-_]+$"
                                            },
                                            "render": {
                                                "enum": [
                                                    "native",
                                                    "default"
                                                ],
                                                "type": "string",
                                                "default": "default"
                                            }
                                        }
                                    },
                                    "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"
                                    },
                                    "layout": {
                                        "enum": [
                                            "inline",
                                            "block"
                                        ],
                                        "type": "string",
                                        "default": "block"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contextMenu": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contentAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:contentBylineItem": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "tooltip": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "tooltip": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    "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"
                                        ]
                                    },
                                    "resource": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 23,
                                        "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:homepageFeed": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:spacePage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:spaceSettings": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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": 23,
                                        "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:globalSettings": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "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": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 1000
                                            }
                                        },
                                        "required": [
                                            "accelerator"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "route",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "confluence:customContent": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    "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-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "supportedContainerTypes",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "description": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 1000
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "supportedContainerTypes",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:workflowValidator": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "description": {
                                "minLength": 1,
                                "maxLength": 1000,
                                "type": "string"
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "expression": {
                                "type": "string"
                            },
                            "errorMessage": {
                                "anyOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "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"
                                ]
                            },
                            "create": {
                                "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"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "name",
                            "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": {
                                            "enum": [
                                                "date",
                                                "number",
                                                "string",
                                                "text",
                                                "user"
                                            ],
                                            "type": "string"
                                        },
                                        "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": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "type": "string"
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 1000,
                                        "type": "string"
                                    },
                                    "type": {
                                        "enum": [
                                            "date",
                                            "datetime",
                                            "group",
                                            "number",
                                            "string",
                                            "user"
                                        ],
                                        "type": "string"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "type": "string"
                                            }
                                        },
                                        "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": {
                                                    "display": {
                                                        "default": "modal",
                                                        "enum": [
                                                            "inline",
                                                            "modal"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "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"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "type": "string"
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 1000,
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "object"
                                        ]
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "type": "string"
                                            }
                                        },
                                        "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": {
                                                    "display": {
                                                        "default": "modal",
                                                        "enum": [
                                                            "inline",
                                                            "modal"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "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"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "formatter",
                                    "name",
                                    "type",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:customFieldType": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "type": "string"
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 1000,
                                        "type": "string"
                                    },
                                    "type": {
                                        "enum": [
                                            "date",
                                            "datetime",
                                            "group",
                                            "number",
                                            "string",
                                            "user"
                                        ],
                                        "type": "string"
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "display": {
                                                        "default": "modal",
                                                        "enum": [
                                                            "inline",
                                                            "modal"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "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": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "blank",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "name",
                                    "type",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "formatter": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "export": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "schema": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "name": {
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "type": "string"
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 1000,
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "object"
                                        ]
                                    },
                                    "collection": {
                                        "enum": [
                                            "list",
                                            "none"
                                        ],
                                        "type": "string"
                                    },
                                    "validation": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            },
                                            "errorMessage": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "readOnly": {
                                        "type": "boolean"
                                    },
                                    "edit": {
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "display": {
                                                        "default": "modal",
                                                        "enum": [
                                                            "inline",
                                                            "modal"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "resource": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "function": {
                                                        "type": "string",
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                                    }
                                                },
                                                "required": [
                                                    "function"
                                                ]
                                            }
                                        ]
                                    },
                                    "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": 23,
                                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                                    },
                                                    "layout": {
                                                        "enum": [
                                                            "basic",
                                                            "blank",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "render": {
                                                        "default": "default",
                                                        "enum": [
                                                            "default",
                                                            "native"
                                                        ],
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "resource"
                                                ]
                                            }
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "parser": {
                                        "type": "object",
                                        "properties": {
                                            "expression": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "expression"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "formatter",
                                    "name",
                                    "type",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge",
                                            "max"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:uiModifications": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {
                                "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_\\-]+$"
                            },
                            "render": {
                                "enum": [
                                    "native",
                                    "default"
                                ],
                                "type": "string",
                                "default": "default"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "title",
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:issueGlance": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "title": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "label": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "badge",
                                                    "icon",
                                                    "lozenge"
                                                ],
                                                "type": "string"
                                            },
                                            "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": 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"
                                    },
                                    "title": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "label": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "badge",
                                                    "icon",
                                                    "lozenge"
                                                ],
                                                "type": "string"
                                            },
                                            "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": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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"
                                        ]
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "icon",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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"
                                        ]
                                    },
                                    "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge",
                                            "max"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "icon",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jira:issueActivity": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge",
                                            "max"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "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": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "text": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "href": {
                                                        "minLength": 1,
                                                        "maxLength": 1000,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "href",
                                                    "text"
                                                ]
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "thumbnail": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "refreshable": {
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "function",
                                    "title",
                                    "key"
                                ],
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            },
                            {
                                "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"
                                                ]
                                            }
                                        ]
                                    },
                                    "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"
                                        ]
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    },
                                    "title": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "anyOf": [
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "text": {
                                                        "minLength": 1,
                                                        "maxLength": 255,
                                                        "type": "string"
                                                    },
                                                    "href": {
                                                        "minLength": 1,
                                                        "maxLength": 1000,
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "href",
                                                    "text"
                                                ]
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "description": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "thumbnail": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "refreshable": {
                                        "type": "boolean"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "description",
                                    "resource",
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": 23,
                                        "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"
                                    },
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": 23,
                                        "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"
                                    },
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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: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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": 23,
                                        "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"
                                    },
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": 23,
                                        "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"
                                    },
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "pages": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string",
                                                    "minLength": 1,
                                                    "maxLength": 255
                                                },
                                                "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": {
                                                    "minLength": 1,
                                                    "maxLength": 255,
                                                    "type": "string"
                                                },
                                                "pages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "title": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 255
                                                            },
                                                            "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": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "description": {
                                "minLength": 1,
                                "maxLength": 1000,
                                "type": "string"
                            },
                            "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "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"
                                ]
                            },
                            "create": {
                                "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"
                                ]
                            },
                            "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": 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"
                            },
                            "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": {
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_ ]+$",
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "anonymousAllowed": {
                                "type": "boolean"
                            },
                            "defaultGrants": {
                                "type": "array",
                                "items": {
                                    "enum": [
                                        "all",
                                        "jira-administrators",
                                        "none"
                                    ],
                                    "type": "string"
                                }
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "anonymousAllowed",
                            "description",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:projectPermission": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_ ]+$",
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "category": {
                                "default": "other",
                                "enum": [
                                    "attachments",
                                    "comments",
                                    "issues",
                                    "other",
                                    "projects",
                                    "time_tracking",
                                    "voters_and_watchers"
                                ],
                                "type": "string"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "name",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:workflowPostFunction": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "minLength": 1,
                                "maxLength": 255,
                                "type": "string"
                            },
                            "description": {
                                "minLength": 1,
                                "maxLength": 1000,
                                "type": "string"
                            },
                            "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "render": {
                                        "default": "default",
                                        "enum": [
                                            "default",
                                            "native"
                                        ],
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "resource"
                                ]
                            },
                            "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"
                                ]
                            },
                            "create": {
                                "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"
                                ]
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "description",
                            "function",
                            "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": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "label": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "badge",
                                                    "icon",
                                                    "lozenge"
                                                ],
                                                "type": "string"
                                            },
                                            "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": 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"
                                    },
                                    "title": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "label": {
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "type": "string"
                                    },
                                    "status": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "enum": [
                                                    "badge",
                                                    "icon",
                                                    "lozenge"
                                                ],
                                                "type": "string"
                                            },
                                            "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": 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"
                            },
                            "displayConditions": {
                                "type": "object",
                                "properties": {}
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "resource",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "jira:jqlFunction": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "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": {
                                    "enum": [
                                        "attachment",
                                        "cascading_option",
                                        "component",
                                        "date",
                                        "duration",
                                        "group",
                                        "hierarchy_level",
                                        "issue",
                                        "issue_link_type",
                                        "issue_list",
                                        "issue_restriction",
                                        "issue_security_level",
                                        "issue_type",
                                        "label",
                                        "number",
                                        "option",
                                        "priority",
                                        "project",
                                        "project_category",
                                        "project_role",
                                        "project_type",
                                        "resolution",
                                        "saved_filter",
                                        "status",
                                        "status_category",
                                        "team",
                                        "text",
                                        "url",
                                        "user",
                                        "version"
                                    ],
                                    "type": "string"
                                }
                            },
                            "operators": {
                                "type": "array",
                                "items": {
                                    "enum": [
                                        "!=",
                                        "!~",
                                        "<",
                                        "<=",
                                        "=",
                                        ">",
                                        ">=",
                                        "in",
                                        "is",
                                        "is not",
                                        "not in",
                                        "~"
                                    ],
                                    "type": "string"
                                }
                            },
                            "function": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "pattern": "^[a-zA-Z0-9-_]+$"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "arguments",
                            "function",
                            "name",
                            "operators",
                            "types",
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "compass:adminPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "resolver": {
                                        "additionalProperties": false,
                                        "type": "object",
                                        "properties": {
                                            "function": {
                                                "type": "string",
                                                "minLength": 1,
                                                "maxLength": 255,
                                                "pattern": "^[a-zA-Z0-9-_]+$"
                                            }
                                        },
                                        "required": [
                                            "function"
                                        ]
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "icon": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "not": {
                                    "required": [
                                        "unlicensedAccess"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestDetail": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestDetailPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:organizationPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "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-_]+$"
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "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-_]+$"
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "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-_]+$"
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalProfilePanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalUserMenuAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "function": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "function",
                                    "key"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "displayConditions": {
                                        "type": "object",
                                        "properties": {}
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestViewAction": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "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"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "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_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "key"
                                ]
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:portalRequestCreatePropertyPanel": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "resource",
                                    "key"
                                ],
                                "properties": {
                                    "viewportSize": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255,
                                        "enum": [
                                            "xsmall",
                                            "small",
                                            "medium",
                                            "large",
                                            "xlarge"
                                        ]
                                    },
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                                    },
                                    "resourceUploadId": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "render": {
                                        "enum": [
                                            "native",
                                            "default"
                                        ],
                                        "type": "string",
                                        "default": "default"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:assetsImportType": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "icon",
                                    "function",
                                    "startImport",
                                    "stopImport",
                                    "importStatus",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "jiraServiceManagement:assetsSchemaPage": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "title",
                                    "icon",
                                    "function",
                                    "key"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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"
                                    ]
                                }
                            }
                        ]
                    },
                    "minItems": 1
                },
                "bitbucket:repoPullRequestCard": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 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": {
                                        "type": "string"
                                    },
                                    "iconUrl": {
                                        "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": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 255
                                    },
                                    "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": 23,
                                        "pattern": "^[a-zA-Z0-9-_]+$"
                                    },
                                    "key": {
                                        "$ref": "#/definitions/ModuleKeySchema"
                                    }
                                },
                                "required": [
                                    "title",
                                    "resource",
                                    "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": [
                            "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                        "format": "uri",
                                        "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "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": [
                            "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": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "type": "string",
                                "fieldDescription": "\n\nURI of the dashboard item thumbnail which is displayed in the directory.\n\n"
                            },
                            "key": {
                                "$ref": "#/definitions/ModuleKeySchema"
                            }
                        },
                        "required": [
                            "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": [
                            "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": {
                                        "format": "uri",
                                        "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": [
                            "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": [
                            "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": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-jira:lifecycle": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "installed": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully un-installed. This is an asynchronous notification event.\n\n"
                            },
                            "enabled": {
                                "format": "uri",
                                "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: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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:blueprints": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "template": {
                                "properties": {
                                    "blueprintContext": {
                                        "properties": {
                                            "url": {
                                                "format": "uri",
                                                "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": {
                                        "format": "uri",
                                        "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "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": [
                            "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": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:dynamicContentMacros": {
                    "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": {
                                        "format": "uri",
                                        "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": {
                                "format": "uri",
                                "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": {
                                        "format": "uri",
                                        "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": [
                            "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": {
                                        "format": "uri",
                                        "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": {
                                "format": "uri",
                                "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": {
                                        "format": "uri",
                                        "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": [
                            "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": {
                                "format": "uri",
                                "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": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:confluenceThemes": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "routes": {
                                "properties": {
                                    "spaceview": {
                                        "properties": {
                                            "url": {
                                                "format": "uri",
                                                "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": [
                            "key"
                        ],
                        "not": {
                            "required": [
                                "unlicensedAccess"
                            ]
                        }
                    },
                    "minItems": 1
                },
                "connect-confluence:lifecycle": {
                    "type": "array",
                    "items": {
                        "properties": {
                            "installed": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "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": {
                                "format": "uri",
                                "type": "string",
                                "fieldDescription": "\n\nFires when an add on has been successfully un-installed. This is an asynchronous notification event.\n\n"
                            },
                            "enabled": {
                                "format": "uri",
                                "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
                },
                "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
                }
            },
            "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": {
                "scopes": {
                    "items": {
                        "type": "string"
                    },
                    "title": "scopes",
                    "type": "array",
                    "minItems": 0
                },
                "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
                                            },
                                            {
                                                "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
                                            },
                                            {
                                                "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": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "fonts",
                            "type": "array",
                            "minItems": 0
                        },
                        "frames": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "frames",
                            "type": "array",
                            "minItems": 0
                        },
                        "navigation": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "navigation",
                            "type": "array",
                            "minItems": 0
                        },
                        "images": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "images",
                            "type": "array",
                            "minItems": 0
                        },
                        "media": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "media",
                            "type": "array",
                            "minItems": 0
                        },
                        "scripts": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "scripts",
                            "type": "array",
                            "minItems": 0
                        },
                        "styles": {
                            "items": {
                                "type": "string",
                                "maxLength": 1000
                            },
                            "title": "styles",
                            "type": "array",
                            "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"
                    },
                    "tunnel": {
                        "type": "object",
                        "required": [
                            "port"
                        ],
                        "properties": {
                            "port": {
                                "type": "number"
                            }
                        },
                        "additionalProperties": false
                    }
                }
            }
        },
        "RemotesSchema": {
            "type": "array",
            "items": {
                "type": "object",
                "title": "RemotesSchema",
                "required": [
                    "key",
                    "baseUrl"
                ],
                "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": {
                        "type": "string"
                    },
                    "operations": {
                        "description": "The type of operations done in the remote",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "enum": [
                                "storage",
                                "other"
                            ]
                        },
                        "minItems": 1
                    },
                    "storage": {
                        "description": "Options related to remote storage",
                        "type": "object",
                        "required": [
                            "classifications"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "classifications": {
                                "description": "Labels to classify the type of data stored",
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "ugc",
                                        "pii",
                                        "other"
                                    ]
                                },
                                "minItems": 1
                            }
                        }
                    }
                }
            }
        },
        "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"
                            }
                        ]
                    }
                }
            }
        },
        "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
                },
                "scopes": {
                    "type": "array",
                    "minItems": 0,
                    "items": {
                        "type": "string"
                    }
                },
                "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
                },
                "scopes": {
                    "type": "array",
                    "minItems": 0,
                    "items": {
                        "type": "string"
                    }
                },
                "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"
                        },
                        "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"
                                        }
                                    }
                                },
                                {
                                    "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"
                                                }
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "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"
                        }
                    }
                }
            }
        },
        "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
                        }
                    }
                }
            }
        },
        "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"
                        }
                    }
                }
            }
        },
        "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\nextension in your descriptor / manifest.\n\nThis key is defined in: https://bitbucket.org/atlassian/connect-service/src/cd7252b/service/cs-apps/api.raml#lines-1094",
            "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"
                }
            },
            "required": [
                "ignoreSelf"
            ]
        },
        "FilteredProductEvents": {
            "title": "FilteredProductEvents",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "eventType": {
                        "title": "eventType",
                        "type": "string"
                    },
                    "filter": {
                        "$ref": "#/definitions/ProductEventsFilter",
                        "title": "filter",
                        "type": "object"
                    }
                },
                "required": [
                    "eventType",
                    "filter"
                ]
            }
        },
        "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"
                                        ],
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "enum": [
                                        "APPLICATION",
                                        "LIBRARY",
                                        "OTHER",
                                        "SERVICE"
                                    ],
                                    "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"
                                                        ],
                                                        "type": "string"
                                                    },
                                                    "type": "array"
                                                },
                                                {
                                                    "enum": [
                                                        "APPLICATION",
                                                        "LIBRARY",
                                                        "OTHER",
                                                        "SERVICE"
                                                    ],
                                                    "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"
                                                            ],
                                                            "type": "string"
                                                        },
                                                        "type": "array"
                                                    },
                                                    {
                                                        "enum": [
                                                            "APPLICATION",
                                                            "LIBRARY",
                                                            "OTHER",
                                                            "SERVICE"
                                                        ],
                                                        "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"
                                                                            ],
                                                                            "type": "string"
                                                                        },
                                                                        "type": "array"
                                                                    },
                                                                    {
                                                                        "enum": [
                                                                            "APPLICATION",
                                                                            "LIBRARY",
                                                                            "OTHER",
                                                                            "SERVICE"
                                                                        ],
                                                                        "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"
                                                            ],
                                                            "type": "string"
                                                        },
                                                        "type": "array"
                                                    },
                                                    {
                                                        "enum": [
                                                            "APPLICATION",
                                                            "LIBRARY",
                                                            "OTHER",
                                                            "SERVICE"
                                                        ],
                                                        "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"
                                                                            ],
                                                                            "type": "string"
                                                                        },
                                                                        "type": "array"
                                                                    },
                                                                    {
                                                                        "enum": [
                                                                            "APPLICATION",
                                                                            "LIBRARY",
                                                                            "OTHER",
                                                                            "SERVICE"
                                                                        ],
                                                                        "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": {
                    "format": "uri",
                    "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": {
                    "format": "uri",
                    "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\n"
                }
            },
            "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"
        },
        "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": {
                    "format": "uri",
                    "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": {
                    "format": "uri",
                    "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"
        }
    },
    "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"
        }
    },
    "required": [
        "app"
    ]
}
