{
  "key": "meetical-connect-app",
  "baseUrl": "https://connect-app.meetical.io",
  "name": "Meetical for Confluence Cloud",
  "vendor": {
    "name": "Meetical",
    "url": "https://www.meetical.io"
  },
  "enableLicensing": true,
  "links": {
    "documentation": "https://www.meetical.io/learn"
  },
  "authentication": {
    "type": "jwt"
  },
  "lifecycle": {
    "installed": "/installed",
    "uninstalled": "/uninstalled"
  },
  "scopes": [
    "READ",
    "WRITE",
    "ACT_AS_USER",
    "ACCESS_EMAIL_ADDRESSES"
  ],
  "apiMigrations": {
    "context-qsh": true,
    "signed-install": true
  },
  "modules": {
    "postInstallPage": {
      "url": "/post-install/getting-started",
      "name": {
        "value": "Meetical Getting Started"
      },
      "key": "meetical-getting-started-page"
    },
    "configurePage": {
      "url": "/admin/app-config?debug={ac.debug}",
      "name": {
        "value": "Configure Meetical App"
      },
      "key": "admin-app-config"
    },
    "generalPages": [
      {
        "url": "/meetings?space_key={space.key}",
        "name": {
          "value": "Meetical Calendar"
        },
        "key": "meetings",
        "location": "system.header/left",
        "icon": {
          "url": "/icons/logo-square-color-transparent.svg"
        }
      }
    ],
    "dialogs": [
      {
        "url": "/dialogs/change-sub-page-template?content_id={content.id}&outputType={output.type}",
        "options": {
          "width": "400px",
          "height": "200px",
          "header": {
            "value": "Change Template"
          },
          "submitText": "Change Template"
        },
        "key": "change-sub-page-template-dialog"
      },
      {
        "url": "/dialogs/recurring-automation-dialog?content_id={content.id}&outputType={output.type}",
        "options": {
          "width": "400px",
          "height": "350px",
          "header": {
            "value": "Recurring Page Automation"
          }
        },
        "key": "recurring-automation-dialog"
      },
      {
        "url": "/dialogs/manage-restrictions-dialog?content_id={content.id}&outputType={output.type}&confluence_is_free={condition.edition_equal_to(edition=FREE)}",
        "options": {
          "width": "400px",
          "height": "350px",
          "header": {
            "value": "Manage Meeting Page Restrictions"
          }
        },
        "key": "manage-restrictions-dialog"
      },
      {
        "url": "/dialogs/detach-master-page?content_id={content.id}&outputType={output.type}",
        "options": {
          "width": "600px",
          "height": "300px",
          "header": {
            "value": "Detach Master Page"
          }
        },
        "key": "detach-master-page-dialog"
      },
      {
        "url": "/dialogs/unlink-event?content_id={content.id}&outputType={output.type}",
        "options": {
          "chrome": false
        },
        "key": "unlink-event-dialog"
      }
    ],
    "dynamicContentMacros": [
      {
        "key": "meetical-set-timezone-macro",
        "name": {
          "value": "Meetical Update User Timezone"
        },
        "url": "/macros/set-timezone?content_id={content.id}&outputType={output.type}",
        "width": "0px",
        "height": "0px",
        "description": {
          "value": "Internal Macro. Used to align the time zone of Confluence and Meetical for the current user."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "inline",
        "bodyType": "none",
        "hidden": true
      },
      {
        "key": "meetical-change-sub-page-template-macro",
        "name": {
          "value": "Change Sub Page Template"
        },
        "width": "154px",
        "height": "34px",
        "url": "/macros/change-sub-page-template?content_id={content.id}",
        "description": {
          "value": "Admin macro. Shows current sub page template recurring meeting series. Allows to change the template."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "key": "meetical-detach-master-page-macro",
        "name": {
          "value": "Detach the current master page from the calendar"
        },
        "width": "220px",
        "height": "34px",
        "url": "/macros/detach-master-page?content_id={content.id}",
        "description": {
          "value": "Detach the current master page from the calendar."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "key": "meetical-recurring-automation-macro",
        "name": {
          "value": "Recurring Automation Macro"
        },
        "width": "325px",
        "height": "40px",
        "url": "/macros/recurring-automation-macro?content_id={content.id}&outputType={output.type}",
        "description": {
          "value": "Admin macro. Allows user to enable/disable automatic creation of pages for recurring meetings."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "key": "meetical-attendee-list-macro",
        "name": {
          "value": "Attendee List"
        },
        "renderModes": {
          "pdf": {
            "url": "/macros/meetical-static-attendee-list-macro?content_id={content.id}"
          },
          "default": {
            "url": "/macros/meetical-static-attendee-list-macro?content_id={content.id}"
          }
        },
        "url": "/macros/meetical-attendee-list-macro?content_id={content.id}&outputType={output.type}",
        "description": {
          "value": "Shows all meeting attendees from the calendar event and their RSVP status. Status can be changed and single attendees can be hidden. This is a live macro, best for attendance lists. For a generated list of participants check the 'Participant List' macro"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "block",
        "bodyType": "none"
      },
      {
        "key": "meetical-event-rating-macro",
        "name": {
          "value": "Event Rating"
        },
        "url": "/macros/meetical-event-rating-macro?content_id={content.id}&macroId={macro.id}&ratingTitle={ratingTitle}&ratingType={ratingType}&outputType={output.type}",
        "description": {
          "value": "Experimental macro, please give us feedback. Allows users to leave ratings for meetings."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "categories": [
          "admin"
        ],
        "outputType": "block",
        "bodyType": "none",
        "hidden": false,
        "parameters": [
          {
            "identifier": "ratingTitle",
            "name": {
              "value": "Customize Rating Title"
            },
            "description": {
              "value": "Leave empty for default Meetical title (Was the meeting effective and engaging?)"
            },
            "type": "string",
            "required": false
          },
          {
            "identifier": "ratingType",
            "name": {
              "value": "Customize Rating Type"
            },
            "description": {
              "value": "Choose a display format"
            },
            "type": "enum",
            "multiple": false,
            "defaultValue": "Emoji",
            "values": [
              "Emoji",
              "Stars",
              "Likert"
            ]
          }
        ]
      },
      {
        "key": "meetical-page-restrictions-macro",
        "name": {
          "value": "Meeting Page Restrictions (Permissions)"
        },
        "renderingMethod": "get",
        "url": "/macros/meetical-page-restrictions-macro?content_id={content.id}&outputType={output.type}",
        "width": "140px",
        "height": "32px",
        "description": {
          "value": "Show and manage the page restrictions for this meeting. Set view/edit permissions to participants only. Check docs for details."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      }
    ],
    "staticContentMacros": [
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-meeting-overview?content_id={content.id}&hide_description={hide_description}&hide_participants={hide_participants}&hide_created_by_meetical={hide_created_by_meetical}&hide_open_action_items={hide_open_action_items}&omit_errors_on_view_page={omit_errors_on_view_page}&outputType={output.type}",
        "key": "meetical-meeting-overview-macro",
        "name": {
          "value": "Meeting Overview"
        },
        "description": {
          "value": "Shows a meeting overview table including date, time, location, participants, conferencing links and description. Use this macro on top of your meeting pages for a concise meeting event summary"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "block",
        "bodyType": "none",
        "parameters": [
          {
            "identifier": "hide_description",
            "name": {
              "value": "Hide event description"
            },
            "description": {
              "value": "Hide the event description in the meeting overview."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hide_participants",
            "name": {
              "value": "Hide event participants"
            },
            "description": {
              "value": "Hide the event participants in the meeting overview."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hide_open_action_items",
            "name": {
              "value": "Hide open action items"
            },
            "description": {
              "value": "Hide the open action items section which appears on pages for recurring meetings."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hide_created_by_meetical",
            "name": {
              "value": "Hide created by Meetical info"
            },
            "description": {
              "value": "Hide source calendar id, and info box that the page was created by Meetical (you might loose some carma points)."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "omit_errors_on_view_page",
            "name": {
              "value": "Omit errors if event data is missing"
            },
            "description": {
              "value": "Omit any error messages when page is viewed, but calendar event metadata is missing. Useful if you plan to use this macro on templates which can be used both with or without Meetical."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          }
        ]
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-recurring-master-overview?content_id={content.id}&outputType={output.type}&hide_created_by_meetical={hide_created_by_meetical}&hide_description={hide_description}&hide_admin_options={hide_admin_options}",
        "key": "meeting-recurring-master-overview-macro",
        "name": {
          "value": "Recurring Master Overview"
        },
        "description": {
          "value": "Admin macro. Shows infos about a meeting series. Should be placed on the master/parent page of a meeting series."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "block",
        "bodyType": "none",
        "parameters": [
          {
            "identifier": "hide_created_by_meetical",
            "name": {
              "value": "Hide created by Meetical info"
            },
            "description": {
              "value": "Hide source calendar id, and info box that the page was created by Meetical (you might loose some carma points)."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hide_description",
            "name": {
              "value": "Hide event description"
            },
            "description": {
              "value": "Hide the event description in the meeting overview."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "true"
          },
          {
            "identifier": "hide_admin_options",
            "name": {
              "value": "Hide administration options"
            },
            "description": {
              "value": "Hide admin options, e.g. to change template and enable/disable automations."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          }
        ]
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-meeting-series-instances-report-macro?content_id={content.id}&outputType={output.type}&hide_attendees={hideAttendees}",
        "key": "meetical-meeting-series-instances-report-macro",
        "name": {
          "value": "Meeting Report (for meeting series and parent pages)"
        },
        "description": {
          "value": "Shows all meeting occurrences in a meeting series or under the current parent"
        },
        "parameters": [
          {
            "identifier": "hideAttendees",
            "name": {
              "value": "Hide Attendees"
            },
            "description": {
              "value": "Tick this checkbox to hide the attendee column in the report."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          }
        ],
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "block",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-event-title-macro?content_id={content.id}&outputType={output.type}",
        "key": "meetical-event-title-macro",
        "name": {
          "value": "Event Title"
        },
        "description": {
          "value": "Shows meeting title, copied from the calendar event"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/event-calendar-link-macro?content_id={content.id}&outputType={output.type}",
        "key": "meetical-event-calendar-link-macro",
        "name": {
          "value": "Event Link"
        },
        "description": {
          "value": "Shows a link to the original calendar entry"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-event-location-macro?content_id={content.id}&outputType={output.type}",
        "key": "meetical-event-location-macro",
        "name": {
          "value": "Event Location"
        },
        "description": {
          "value": "Shows meeting location, taken from the calendar event"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/event-description?content_id={content.id}&outputType={output.type}",
        "key": "meetical-event-description-macro",
        "name": {
          "value": "Event Description"
        },
        "description": {
          "value": "Shows meeting description, taken from the calendar event description"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-event-datetime-macro?content_id={content.id}&hideTimeZone={hideTimeZone}&hideTime={hideTime}&hideDate={hideDate}&outputType={output.type}",
        "key": "meetical-event-datetime-macro",
        "name": {
          "value": "Event Date and Time"
        },
        "description": {
          "value": "Shows meeting event date and time, taken from the calendar"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none",
        "parameters": [
          {
            "identifier": "hideTimeZone",
            "name": {
              "value": "Hide Time Zone"
            },
            "description": {
              "value": "Tick this checkbox to hide the time zone."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hideTime",
            "name": {
              "value": "Hide Time"
            },
            "description": {
              "value": "Tick this checkbox to hide start and end time."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "hideDate",
            "name": {
              "value": "Hide Date"
            },
            "description": {
              "value": "Tick this checkbox to hide the date."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          }
        ]
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-event-status-macro?content_id={content.id}&outputType={output.type}",
        "key": "meetical-event-status-macro",
        "name": {
          "value": "Event Status"
        },
        "description": {
          "value": "Shows meeting event status. Cancelled, Scheduled, In-Progress or Finished. In relation to the start date and time"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/meetical-static-attendee-list-macro?content_id={content.id}&outputType={output.type}",
        "key": "meetical-static-attendee-list-macro",
        "name": {
          "value": "Static Attendee List"
        },
        "description": {
          "value": "Shows meeting attendees as a static list for print views"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none",
        "hidden": true
      },
      {
        "key": "meetical-create-meeting-note-macro",
        "renderingMethod": "get",
        "url": "/macros/meetical-create-meeting-note-macro",
        "name": {
          "value": "Button to Create Meeting Notes with Meetical Calendar"
        },
        "description": {
          "value": "Admin macro. A button to create a meeting notes page with Meetical (Link to internal meeting calendar)"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "key": "meetical-participant-list-macro",
        "renderingMethod": "post",
        "url": "/macros/meetical-participant-list-macro?content_id={content.id}&content_version={content.version}&macro_id={macro.id}&outputType={output.type}",
        "name": {
          "value": "Generated Participant List"
        },
        "description": {
          "value": "This macro should be used on templates only. The macro will populate a real table with a row for each participant and an @mention. By default the table contains two columns, 'Participant' and 'Input'. To customize the columns to use, add a table inside this macro and specify the columns and set default values in the first row."
        },
        "parameters": [
          {
            "identifier": "wrapInExpandMacro",
            "name": {
              "value": "Wrap table in expand macro"
            },
            "description": {
              "value": "When checked, the table will be wrapped in an expandable / collapsible section."
            },
            "type": "boolean",
            "required": false,
            "defaultValue": "false"
          },
          {
            "identifier": "expandMacroTitle",
            "name": {
              "value": "The title to use for the expand section"
            },
            "description": {
              "value": "(Optional) You can give the expandable section a title."
            },
            "type": "string",
            "required": false,
            "defaultValue": ""
          },
          {
            "identifier": "participantColumnName",
            "name": {
              "value": "The column name where to @mention the participant"
            },
            "description": {
              "value": "(Optional) When using a custom table, specify the column name where to @mention the user. By default the column with label \"Participant\" will be used."
            },
            "type": "string",
            "required": false,
            "defaultValue": "Participant"
          }
        ],
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "reporting"
        ],
        "outputType": "inline",
        "bodyType": "rich-text"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/macros-meeting-series-navigation?content_id={content.id}",
        "key": "macros-meeting-series-navigation",
        "name": {
          "value": "Meeting Series Navigation"
        },
        "description": {
          "value": "Shows meeting series navigation links for recurring meetings."
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      },
      {
        "renderingMethod": "get",
        "url": "/macros/macros-open-tasks-in-series?content_id={content.id}",
        "key": "macros-open-tasks-in-series",
        "name": {
          "value": "Open Tasks in Series"
        },
        "description": {
          "value": "Shows all open tasks in a meeting series"
        },
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/icons/meetical_icon.svg"
        },
        "documentation": {
          "url": "https://www.meetical.io/learn"
        },
        "categories": [
          "external-content"
        ],
        "outputType": "inline",
        "bodyType": "none"
      }
    ],
    "confluenceContentProperties": [
      {
        "key": "meetical-content-property-index",
        "name": {
          "value": "Meetical Content Property Index"
        },
        "keyConfigurations": [
          {
            "propertyKey": "meetical",
            "extractions": [
              {
                "objectName": "event.id",
                "type": "string"
              },
              {
                "objectName": "isMeeticalPage",
                "type": "number"
              },
              {
                "objectName": "seriesPaginationMode",
                "type": "string"
              },
              {
                "objectName": "event.recurringEventId",
                "type": "string"
              },
              {
                "objectName": "event.idInSourceCalendar",
                "type": "string"
              },
              {
                "objectName": "event.startDateTime",
                "type": "date"
              },
              {
                "objectName": "event.endDateTime",
                "type": "date"
              },
              {
                "objectName": "additionalEventIds",
                "type": "string"
              }
            ]
          }
        ]
      }
    ],
    "webItems": [
      {
        "location": "system.user/user-preferences",
        "weight": 200,
        "url": "/meetings?s=mcpm",
        "context": "page",
        "target": {
          "type": "page"
        },
        "name": {
          "value": "Meetical Calendar"
        },
        "key": "meetical-user-menu-meeting-calendar-link"
      },
      {
        "location": "system.admin/marketplace_confluence",
        "weight": 200,
        "url": "/admin-app-config",
        "context": "page",
        "target": {
          "type": "page"
        },
        "name": {
          "value": "Meetical Configuration"
        },
        "key": "meetical-admin-marketplace-link"
      },
      {
        "location": "system.content.action",
        "weight": 200,
        "context": "page",
        "target": {
          "type": "dialogmodule",
          "options": {
            "key": "unlink-event-dialog"
          }
        },
        "name": {
          "value": "Meetical: Unlink Events from Page"
        },
        "key": "unlink-events-link"
      }
    ],
    "customContent": [
      {
        "key": "document",
        "name": { "value": "Meetical Calendar" },
        "uiSupport": {
          "listViewComponent": {
            "moduleKey": "meetings"
          },
          "contentViewComponent": {
            "moduleKey": "meetings"
          },
          "icons": {
            "item": {
              "url": "/icons/logo-square-color-transparent.svg"
            }
          }
        },
        "apiSupport": {
          "supportedContainerTypes": [
            "space"
          ]
        }
      }
    ]
  }
}
