{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://git.davinti.com.br/davinTI/vitruvio/raw/branch/master/vitruvio-ui/src/main/resources/vitruvio-manifest-schema.json", "title": "vitruvio.json", "description": "Vitruvio Git Content Repository Manifest", "type": "object", "required": ["version", "metadata"], "additionalProperties": false, "properties": { "$schema": { "type": "string" }, "_comment": { "type": "string" }, "_comment_version": { "type": "string" }, "version": { "type": "string", "description": "Manifest version, e.g. \"1.0.0\"" }, "metadata": { "type": "object", "required": ["key"], "additionalProperties": false, "properties": { "name": { "type": "string" }, "key": { "type": "string", "description": "Unique identifier for this content package" }, "standardProduct": { "type": "boolean" } } }, "panels": { "type": "array", "items": { "$ref": "#/definitions/panel" } }, "processes": { "type": "array", "items": { "$ref": "#/definitions/process" } }, "scripts": { "type": "array", "items": { "$ref": "#/definitions/script" } }, "endpoints": { "type": "array", "items": { "$ref": "#/definitions/endpoint" } }, "queries": { "type": "array", "items": { "$ref": "#/definitions/query" } }, "reports": { "type": "array", "items": { "$ref": "#/definitions/report" } }, "libraries": { "type": "array", "items": { "$ref": "#/definitions/library" } }, "groups": { "type": "array", "items": { "$ref": "#/definitions/group" } }, "properties": { "type": "array", "items": { "$ref": "#/definitions/property" } }, "menu": { "type": "array", "items": { "$ref": "#/definitions/menuItem" } }, "permissions": { "type": "array", "items": { "$ref": "#/definitions/permission" } }, "patches": { "type": "string", "description": "Relative directory path containing Liquibase changesets, e.g. \"patches/\"" } }, "definitions": { "panel": { "type": "object", "required": ["key", "name"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] }, "category": { "type": "string", "description": "Hierarchical path, e.g. \"Comercial/Vendas\"" }, "displayOrder": { "type": "integer", "default": 0 }, "showInPresentation": { "type": "boolean", "default": false }, "openInNewWindow": { "type": "boolean", "default": false }, "showInMobileList": { "type": "boolean", "default": false }, "displayTimeInSeconds": { "type": "integer", "default": 0 }, "allowedGroups": { "type": "array", "items": { "type": "string" } }, "allowedUsers": { "type": "array", "items": { "type": "string" } }, "forms": { "type": "object", "additionalProperties": false, "properties": { "desktop": { "type": ["string", "null"], "description": "Relative path to desktop form XML" }, "mobile": { "type": ["string", "null"], "description": "Relative path to mobile form XML" }, "mobileAlternative": { "type": ["string", "null"], "description": "Relative path to alternative mobile form XML" } } }, "defaultState": { "type": ["string", "null"], "description": "Relative path to default state JSON" }, "thumbnail": { "type": ["string", "null"], "description": "Relative path to thumbnail image" } } }, "script": { "type": "object", "required": ["key", "name", "source", "language", "domain"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] }, "language": { "type": "string", "enum": ["javascript", "JavaScript", "groovy", "Groovy"] }, "domain": { "type": "string", "enum": ["USUARIO", "SISTEMA"] }, "source": { "type": "string", "description": "Relative path to the script file" }, "documentation": { "type": ["string", "null"], "description": "Relative path to optional documentation file" }, "schedules": { "type": "array", "items": { "$ref": "#/definitions/scriptSchedule" } } } }, "scriptSchedule": { "type": "object", "required": ["uuid", "nome", "triggerInfo"], "additionalProperties": false, "properties": { "uuid": { "type": "string", "format": "uuid" }, "nome": { "type": "string" }, "descricao": { "type": ["string", "null"] }, "proprietario": { "type": ["string", "null"] }, "execFeriado": { "$ref": "#/definitions/scheduleExecFeriado" }, "scheduleScriptParameters": { "type": ["string", "null"] }, "controleNotificacao": { "type": "boolean", "default": false }, "configuracaoNotificacao": { "type": ["object", "null"] }, "triggerInfo": { "$ref": "#/definitions/triggerInfo" }, "statusPolicy": { "$ref": "#/definitions/scheduleSyncPolicy" } } }, "endpoint": { "type": "object", "required": ["key", "name", "source", "language", "authMode"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] }, "language": { "type": "string", "enum": ["javascript", "JavaScript", "groovy", "Groovy"] }, "authMode": { "type": "string", "enum": ["PUBLIC", "STATIC_TOKEN", "VITRUVIO_WS_USER_AUTH", "HTTP_BASIC_AUTH"] }, "active": { "type": "boolean", "default": true }, "source": { "type": "string", "description": "Relative path to the endpoint script file" } } }, "query": { "type": "object", "required": ["key", "name", "source"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "connection": { "type": ["string", "null"], "description": "Database connection key" }, "source": { "type": "string", "description": "Relative path to the SQL file" } } }, "report": { "type": "object", "required": ["key", "name", "type", "category"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] }, "type": { "type": "string", "enum": ["MODELO_ESTATICO", "DINAMICO_QUERY_SQL"] }, "category": { "type": "string", "description": "Hierarchical category path" }, "owner": { "type": ["string", "null"] }, "template": { "type": ["string", "null"], "description": "Relative path to Jasper template" }, "parameterForm": { "type": ["string", "null"], "description": "Relative path to parameter form XML" }, "query": { "type": ["string", "null"], "description": "Key of the query used by this report" }, "orientation": { "type": "string", "enum": ["RETRATO", "PAISAGEM"] }, "allowedGroups": { "type": "array", "items": { "type": "string" } }, "allowedUsers": { "type": "array", "items": { "type": "string" } }, "columns": { "type": "array", "items": { "$ref": "#/definitions/reportColumn" } }, "schedules": { "type": "array", "items": { "$ref": "#/definitions/reportSchedule" } } } }, "reportColumn": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "label": { "type": "string" }, "align": { "type": "string", "enum": ["LEFT", "CENTER", "RIGHT"] }, "width": { "type": "integer" }, "aggregation": { "type": ["string", "null"], "description": "e.g. \"SUM\", \"COUNT\", \"AVG\"" }, "groupBy": { "type": "boolean", "default": false }, "groupByType": { "type": ["string", "null"], "description": "e.g. \"VALUE_IN_HEADER\", \"VALUE_IN_HEADER_WITH_HEADERS\"" }, "pattern": { "type": ["string", "null"] }, "separadorDecimal": { "type": ["string", "null"] }, "separadorGrupo": { "type": ["string", "null"] } } }, "reportSchedule": { "type": "object", "required": ["uuid", "nome", "triggerInfo"], "additionalProperties": false, "properties": { "uuid": { "type": "string", "format": "uuid" }, "nome": { "type": "string" }, "descricao": { "type": ["string", "null"] }, "proprietario": { "type": ["string", "null"] }, "execFeriado": { "$ref": "#/definitions/scheduleExecFeriado" }, "triggerInfo": { "$ref": "#/definitions/triggerInfo" }, "usuarios": { "type": "array", "items": { "type": "string" } }, "emails": { "type": "array", "items": { "type": "string" } }, "grupos": { "type": "array", "items": { "type": "string" } }, "formatos": { "type": "array", "items": { "type": "integer" } }, "emailHTML": { "type": ["string", "null"] }, "emailAssunto": { "type": ["string", "null"] }, "preExec": { "type": ["string", "null"] }, "posExec": { "type": ["string", "null"] }, "embedHtml": { "type": "boolean", "default": false }, "embedRecipients": { "type": "boolean", "default": false }, "comprimirAnexosZip": { "type": "boolean", "default": false }, "ignorarRelatorioSemDados": { "type": "boolean", "default": false }, "enviarRelatorioPorEmail": { "type": "boolean", "default": false }, "salvarBibliotecaArquivos": { "type": "boolean", "default": false }, "biblioteca": { "type": ["string", "null"] }, "nomeArquivoPrefixo": { "type": ["string", "null"] }, "usarDataComoSufixoComFormato": { "type": ["string", "null"] }, "usarDataComoSufixoComFormatoAoAnexar": { "type": ["string", "null"] }, "sobrescreverArquivoNaBiblioteca": { "type": "boolean", "default": false }, "subdiretorio": { "type": ["string", "null"] }, "jsonReportParam": { "type": ["string", "null"] } } }, "library": { "type": "object", "required": ["key", "name", "type", "authMode", "files"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": ["LOCAL"] }, "authMode": { "type": "string", "enum": ["PUBLIC", "MOBILE", "STATIC_TOKEN"] }, "authToken": { "type": ["string", "null"], "description": "Required when authMode is STATIC_TOKEN" }, "mobileEnabled": { "type": "boolean", "default": false }, "files": { "type": "string", "description": "Relative path to directory containing library files" } } }, "group": { "type": "object", "required": ["key", "name"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] } } }, "property": { "type": "object", "required": ["key", "type"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "displayName": { "type": "string" }, "description": { "type": ["string", "null"] }, "type": { "type": "string", "enum": ["STRING", "INTEGER", "BOOLEAN", "DATE"] }, "size": { "type": ["integer", "null"] }, "precision": { "type": ["integer", "null"] }, "format": { "type": ["string", "null"] }, "required": { "type": "boolean", "default": false }, "password": { "type": "boolean", "default": false }, "predefinedValues": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string" }, "descricao": { "type": "string" }, "ordem": { "type": "integer", "default": 0 } } } } } }, "menuItem": { "type": "object", "required": ["key", "name", "type"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "icon": { "type": ["integer", "null"] }, "order": { "type": "integer", "default": 0 }, "type": { "type": "string", "enum": ["MENU", "PAINEL", "RELATORIO", "PROCESSO", "SISTEMA"] }, "panelKey": { "type": ["string", "null"], "description": "References panel.key (when type is PANEL)" }, "reportKey": { "type": ["string", "null"], "description": "References report.key (when type is REPORT)" }, "processKey": { "type": ["string", "null"], "description": "References process.key (when type is PROCESS)" }, "children": { "type": "array", "items": { "$ref": "#/definitions/menuItem" } } } }, "permission": { "type": "object", "required": ["processKey", "group"], "additionalProperties": false, "properties": { "processKey": { "type": "string", "description": "References process.key" }, "group": { "type": "string", "description": "References group.key" }, "read": { "type": "boolean", "default": false }, "writeStages": { "type": "boolean", "default": false }, "cancel": { "type": "boolean", "default": false }, "delete": { "type": "boolean", "default": false }, "stageStatus": { "type": "boolean", "default": false } } }, "process": { "type": "object", "required": ["key", "name", "bpmn"], "additionalProperties": false, "properties": { "key": { "type": "string" }, "name": { "type": "string" }, "description": { "type": ["string", "null"] }, "bpmn": { "type": "string", "description": "Relative path to the BPMN XML file" }, "forms": { "type": "object", "additionalProperties": false, "properties": { "desktop": { "type": ["string", "null"] }, "mobile": { "type": ["string", "null"] }, "mobileAlternative": { "type": ["string", "null"] } } }, "schedules": { "type": "array", "items": { "$ref": "#/definitions/processSchedule" } } } }, "processSchedule": { "type": "object", "required": ["uuid", "nome", "triggerInfo"], "additionalProperties": false, "properties": { "uuid": { "type": "string", "format": "uuid" }, "nome": { "type": "string" }, "descricao": { "type": ["string", "null"] }, "proprietario": { "type": ["string", "null"] }, "execFeriado": { "$ref": "#/definitions/scheduleExecFeriado" }, "triggerInfo": { "$ref": "#/definitions/triggerInfo" }, "type": { "type": ["string", "null"], "enum": ["SIMPLE", "OWNER_LOOP", null] }, "controleNotificacao": { "type": "boolean", "default": false }, "configuracaoNotificacao": { "type": ["string", "null"] }, "metadata": { "$ref": "#/definitions/scheduleNotificationMetadata" }, "usuarios": { "type": "array", "items": { "type": "string" } }, "grupos": { "type": "array", "items": { "type": "string" } }, "emails": { "type": "array", "items": { "type": "string" } }, "scheduleParams": { "type": ["string", "null"] }, "customParams": { "type": ["string", "null"] } } }, "scheduleNotificationMetadata": { "type": "object", "additionalProperties": false, "properties": { "assuntoEmail": { "type": ["string", "null"] }, "mensagemEmail": { "type": ["string", "null"] }, "checkEmail": { "type": ["boolean", "null"] }, "checkPush": { "type": ["boolean", "null"] }, "usuariosNotificados": { "type": ["string", "null"] }, "gruposNotificados": { "type": ["string", "null"] }, "emailsAuxiliares": { "type": ["string", "null"] } } }, "triggerInfo": { "oneOf": [ { "$ref": "#/definitions/simpleTriggerInfo" }, { "$ref": "#/definitions/calendarTriggerInfo" } ] }, "simpleTriggerInfo": { "type": "object", "required": ["type", "repeatEvery", "repeat"], "additionalProperties": false, "properties": { "type": { "type": "string", "const": "SimpleTriggerInfo" }, "triggerName": { "type": ["string", "null"] }, "triggerDescription": { "type": ["string", "null"] }, "repeat": { "type": "string", "enum": ["SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS"] }, "repeatEvery": { "type": "integer", "minimum": 1 }, "repeatCount": { "type": ["integer", "null"] }, "startDate": { "type": ["string", "null"], "format": "date-time" }, "endDate": { "type": ["string", "null"], "format": "date-time" }, "execFeriado": { "$ref": "#/definitions/scheduleExecFeriado" }, "minute": { "type": "integer", "minimum": 0, "maximum": 59 }, "hour": { "type": "integer", "minimum": 0, "maximum": 23 }, "dayOfWeek": { "type": "integer", "minimum": 1, "maximum": 7 } } }, "calendarTriggerInfo": { "type": "object", "required": ["type"], "additionalProperties": false, "properties": { "type": { "type": "string", "const": "CalendarTriggerInfo" }, "triggerName": { "type": ["string", "null"] }, "triggerDescription": { "type": ["string", "null"] }, "startDate": { "type": ["string", "null"], "format": "date-time" }, "endDate": { "type": ["string", "null"], "format": "date-time" }, "execFeriado": { "$ref": "#/definitions/scheduleExecFeriado" }, "months": { "type": "array", "items": { "type": "integer", "minimum": 1, "maximum": 12 }, "description": "Empty = every month" }, "weekDays": { "type": "array", "items": { "type": "integer", "minimum": 1, "maximum": 7 }, "description": "1=Sunday ... 7=Saturday. Mutually exclusive with monthDaysExpression" }, "monthDaysExpression": { "type": ["string", "null"], "description": "e.g. \"1,15\" or \"1-5\" or \"*\". Mutually exclusive with weekDays" }, "hourExpression": { "type": ["string", "null"], "description": "e.g. \"8,12,18\" or \"8-17\" or \"*\"" }, "minutesExpression": { "type": ["string", "null"], "description": "e.g. \"0,30\" or \"*\"" }, "secondsExpression": { "type": ["string", "null"], "description": "e.g. \"0\"" } } }, "scheduleExecFeriado": { "type": "string", "enum": ["SEMPRE_EXECUTAR_FERIADO", "NUNCA_EXECUTAR_FERIADO", "DEFINIR_EXECUTAR_FERIADO"] }, "scheduleSyncPolicy": { "type": "string", "description": "Controls the schedule's paused/active state on git sync. Omitted = KEEP_PREVIOUS: restores whatever pause/active state the schedule already had (new schedules are still imported paused). ALWAYS_ACTIVE / ALWAYS_PAUSED force that state on every sync regardless of prior state.", "enum": ["KEEP_PREVIOUS", "ALWAYS_ACTIVE", "ALWAYS_PAUSED"] } } }