{
  "key": "com.soldevelo.apps.checklists.demo",
  "baseUrl": "https://apps-checklists-demo.soldevelo.com",
  "name": "Multiple Checklists for Jira - Demo",
  "description": "Multiple Checklists is a tool designed for creating checklists directly in Jira issues to help in organizing work on a particular task. Current version of the app is 5.12.0-SNAPSHOT",
  "enableLicensing": true,
  "vendor": {
    "name": "SolDevelo",
    "url": "http://www.soldevelo.com"
  },
  "authentication": {
    "type": "jwt"
  },
  "lifecycle": {
    "installed": "/installed",
    "uninstalled": "/uninstalled"
  },
  "scopes": ["READ", "WRITE", "ADMIN"],
  "translations": {
    "paths": {
      "en-US": "/i18n/atlaskit/en_US.json"
    }
  },
  "modules": {
    "jiraProjectAdminTabPanels": [
      {
        "location": "projectgroup1",
        "url": "/project-checklists-settings?projectKey={project.key}",
        "weight": 100,
        "name": {
          "value": "Checklists - settings"
        },
        "key": "admin-panel"
      }
    ],
    "jiraWorkflowValidators": [
      {
        "description": {
          "value": "Requires that given checklists in an issue have all items checked before a status transition is allowed."
        },
        "expression": "project.properties['soldevelo-checklists-settings']&&!project.properties['soldevelo-checklists-settings'].enabled||project.properties['soldevelo-checklists-settings']&&project.properties['soldevelo-checklists-settings'].enabled&&project.properties['soldevelo-checklists-settings'].issueTypes&&project.properties['soldevelo-checklists-settings'].issueTypes.some(e=>Number(e.id)==issue.issueType.id&&!e.enabled)||issue.properties.keys().filter(e=>0==e.indexOf('sd-checklists')).every(e=>issue.properties[e].checklists.filter(e=>!config||0==config.checklistName.length||e.name.includes(config.checklistName)&&e.name.length==config.checklistName.length).every(e=>e.items.every(e=>e.completed)))",
        "errorMessage": {
          "value": "Oops! This issue has checklist items that have not yet been completed. Please make sure they are checked before transitioning the issue."
        },
        "name": {
          "value": "All checklist items are checked"
        },
        "create": {
          "url": "/validators/checklist-items-are-checked/create"
        },
        "edit": {
          "url": "/validators/checklist-items-are-checked/edit?config={validator.config}"
        },
        "view": {
          "url": "/validators/checklist-items-are-checked/view?config={validator.config}"
        },
        "key": "checklists-validator"
      },
      {
        "description": {
          "value": "Requires that all items in checklist have a status set before an issue status transition is allowed."
        },
        "expression": "project.properties['soldevelo-checklists-settings']&&!project.properties['soldevelo-checklists-settings'].enabled||project.properties['soldevelo-checklists-settings']&&project.properties['soldevelo-checklists-settings'].enabled&&project.properties['soldevelo-checklists-settings'].issueTypes&&project.properties['soldevelo-checklists-settings'].issueTypes.some(e=>Number(e.id)==issue.issueType.id&&!e.enabled)||issue.properties.keys().filter(e=>0==e.indexOf('sd-checklists')).every(e=>issue.properties[e].checklists.filter(e=>!config||0==config.checklistName.length||e.name.includes(config.checklistName)&&e.name.length==config.checklistName.length).every(e=>e.items.every(e=>e.status)))",
        "errorMessage": {
          "value": "Oops! This issue has checklist items that don't have status set. Please make sure they have status set before transitioning the issue."
        },
        "name": {
          "value": "All checklist items have status set"
        },
        "create": {
          "url": "/validators/checklist-items-have-status/create"
        },
        "edit": {
          "url": "/validators/checklist-items-have-status/edit?config={validator.config}"
        },
        "view": {
          "url": "/validators/checklist-items-have-status/view?config={validator.config}"
        },
        "key": "checklists-items-statuses-validator"
      }
    ],
    "webPanels": [
      {
        "key": "delete-checklist-dialog",
        "location": "none",
        "name": {
          "value": "Dialog"
        },
        "url": "/delete-checklist-dialog"
      },
      {
        "key": "delete-template-dialog",
        "location": "none",
        "name": {
          "value": "Dialog"
        },
        "url": "/delete-template-dialog"
      },
      {
        "key": "templates-dialog",
        "location": "none",
        "name": {
          "value": "Dialog"
        },
        "url": "/templates-dialog"
      },
      {
        "key": "add-checklist-template",
        "location": "none",
        "name": {
          "value": "Dialog"
        },
        "url": "/add-checklist-template"
      },
      {
        "key": "convert-checklist-to-sub-tasks",
        "location": "none",
        "name": {
          "value": "Dialog"
        },
        "url": "/convert-checklist-to-sub-tasks"
      }
    ],
    "jiraIssueContents": [
      {
        "key": "soldevelo-checklists-content",
        "name": {
          "value": "Checklists Demo"
        },
        "icon": {
          "width": 20,
          "height": 20,
          "url": "/images/checklists-icon.png"
        },
        "target": {
          "type": "web_panel",
          "url": "/checklists?issueKey={issue.key}"
        },
        "tooltip": {
          "value": "Multiple Checklists"
        },
        "conditions": [
          {
            "condition": "entity_property_equal_to",
            "invert": true,
            "params": {
              "entity": "project",
              "propertyKey": "soldevelo-checklists-settings",
              "objectName": "enabled",
              "value": "false"
            }
          },
          {
            "condition": "jira_expression",
            "invert": true,
            "params": {
              "expression": "(project.properties['soldevelo-checklists-settings'] && !project.properties['soldevelo-checklists-settings'].enabled) || (project.properties['soldevelo-checklists-settings'] && project.properties['soldevelo-checklists-settings'].enabled && project.properties['soldevelo-checklists-settings'].issueTypes && project.properties['soldevelo-checklists-settings'].issueTypes.some(issueType => Number(issueType.id) == issue.issueType.id && !issueType.enabled))"
            }
          }
        ]
      }
    ],
    "webSections": [
      {
        "location": "admin_plugins_menu",
        "name": {
          "value": "Checklists - Demo"
        },
        "key": "checklists-settings-section"
      }
    ],
    "adminPages": [
      {
        "key": "settings-page",
        "url": "/settings",
        "name": {
          "value": "Settings"
        },
        "location": "admin_plugins_menu/checklists-settings-section"
      },
      {
        "key": "manage-templates",
        "url": "/manage-templates-admin",
        "name": {
          "value": "Manage templates"
        },
        "location": "admin_plugins_menu/checklists-settings-section"
      },
      {
        "key": "statuses",
        "url": "/statuses",
        "name": {
          "value": "Checklist item statuses"
        },
        "location": "admin_plugins_menu/checklists-settings-section"
      },
      {
        "key": "checklists-permissions",
        "url": "/checklists-permissions",
        "name": {
          "value": "Checklists permissions"
        },
        "location": "admin_plugins_menu/checklists-settings-section"
      }
    ],
    "configurePage": {
      "key": "configure-page",
      "name": {
        "value": "Settings"
      },
      "url": "/settings"
    },
    "generalPages": [
      {
        "key": "manage-templates-page",
        "location": "none",
        "name": {
          "value": "Manage templates"
        },
        "url": "/manage-templates"
      }
    ],
    "webhooks": [
      {
        "event": "jira:issue_created",
        "url": "/issueCreated",
        "excludeBody": false
      },
      {
        "event": "jira:issue_updated",
        "url": "/issueUpdated",
        "excludeBody": false
      },
      {
        "event": "project_created",
        "url": "/projectCreated",
        "excludeBody": false
      }
    ],
    "jiraIssueTabPanels": [
      {
        "url": "/checklists-history?issueKey={issue.key}",
        "weight": 100,
        "name": {
          "i18n": "checklists.history.label",
          "value": "Checklists History"
        },
        "key": "checklists-history-tab",
        "conditions": [
          {
            "condition": "user_is_logged_in"
          },
          {
            "condition": "user_is_logged_in"
          },
          {
            "condition": "entity_property_equal_to",
            "invert": true,
            "params": {
              "entity": "project",
              "propertyKey": "soldevelo-checklists-settings",
              "objectName": "enabled",
              "value": "false"
            }
          },
          {
            "condition": "jira_expression",
            "invert": true,
            "params": {
              "expression": "(project.properties['soldevelo-checklists-settings'] && !project.properties['soldevelo-checklists-settings'].enabled) || (project.properties['soldevelo-checklists-settings'] && project.properties['soldevelo-checklists-settings'].enabled && project.properties['soldevelo-checklists-settings'].issueTypes && project.properties['soldevelo-checklists-settings'].issueTypes.some(issueType => Number(issueType.id) == issue.issueType.id && !issueType.enabled))"
            }
          }
        ]
      }
    ],
    "jiraIssueFields": [
      {
        "description": {
          "value": "Do not delete. Automatically created and managed by Multiple Checklists for Jira"
        },
        "type": "string",
        "name": {
          "value": "Multiple Checklists for Jira - Progress"
        },
        "key": "multiple-checklists-progress"
      }
    ]
  },
  "apiMigrations": {
    "context-qsh": true,
    "signed-install": true
  },
  "cloudAppMigration": {
    "migrationWebhookPath": "/migration"
  }
}
