CINXE.COM
Manifest – Forge apps
<!DOCTYPE html> <html lang="en"> <head><meta name="csrf" content="9uFj6s8F-5M7tIL0dWrhtsnjKNVRiA45Jbms"> <link rel="preconnect" href="https://dac-static.atlassian.com" crossorigin /> <link rel="dns-prefetch" href="https://dac-static.atlassian.com" /> <script defer type="text/javascript" src="https://dac-static.atlassian.com/_static/polyfills.8379de574ef7ac86c22f.bundle.js"></script> <script defer type="text/javascript" src="https://dac-static.atlassian.com/_static/documentation-changelogs-docs-index-rest-api-docs-rest-docs-search-graphql-docs-graphql-sandbox-jsapi-connect-module-pages-analytics-and-cookie-preferences-homepage-errors-supportdesk.2c924eda1f86bc6dd397.bundle.js"></script><script defer type="text/javascript" src="https://dac-static.atlassian.com/_static/documentation-changelogs-docs-index-rest-api-docs-rest-docs-search-graphql-docs-graphql-sandbox-jsapi-connect-module-pages-homepage-errors-supportdesk.b7272185f303ac4f1793.bundle.js"></script><script defer type="text/javascript" src="https://dac-static.atlassian.com/_static/documentation.5401b4574986b54f2822.bundle.js"></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta data-react-helmet="true" name="description" content="Learn how to define your Forge app's capabilities and configuration in the manifest file."/> <meta name="dac:version" content="1.5800.902"> <link rel="shortcut icon" href="https://dac-static.atlassian.com/favicon.ico" type="image/x-icon"> <link rel="icon" href="https://dac-static.atlassian.com/favicon.ico" type="image/x-icon"> <link rel="search" href="https://dac-static.atlassian.com/opensearch.xml" type="application/opensearchdescription+xml"> <script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA=" type="text/javascript">window.__DATA__ = {"jiraIssueCollectorId":"ee87e716","page":{"document":[{"type":"markdown","content":"\n# Overview\n\nThe [manifest](/platform/forge/manifest) contains three required top-level properties: `app`,\n`modules`, and `permissions`, and number of optional properties. For example:\n\n```yaml\napp:\n id: \"ari:cloud:ecosystem::app/406d303d-0393-4ec4-ad7c-1435be94583a\"\n licensing:\n enabled: true \n```\n\n\n\u003ctable>\n\u003cthead>\n\u003ctr>\n\u003cth>Property\u003c/th>\n\u003cth>Required\u003c/th>\n\u003cth>Description\u003c/th>\n\u003c/tr>\n\u003c/thead>\n\u003ctbody>\n\u003ctr>\n\u003ctd>\u003ccode>app\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\u003cp>Identifying information, licensing details, and app storage (EAP).\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/#app\">App\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>modules\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\n\u003cp>A list of the modules used by the app.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/modules/\">Modules\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>permissions\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\n\u003cp>A list of the permissions required by the app.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/permissions/\">Permissions\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>connectModules\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of the Connect modules used by the app.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>endpoint\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of remote endpoints referenced by remote resolver invocations.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/endpoint/\">Endpoint\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>providers\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>Authentication providers used by the app.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/providers/\">Providers\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>remotes\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of remote services required by the app (along with additional options for declaring\negress details for \u003ca href=\"/platform/forge/data-residency/\">data residency\u003c/a>).\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/remotes/\">Remotes\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>resources\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of the resources used by the app.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/resources/\">Resources\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ca id=\"variables\">\u003c/a>\n\u003ctr>\n\u003ctd>\u003ccode>environment\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of \u003ci>environment variables\u003c/i> to be parsed by the Forge CLI for entire or partial\nfield values.\u003c/p>\n\u003cp>After specifying a variable in \u003ccode>environment\u003c/code>, you can declare it in any field by enclosing it in \u003ccode>${\u003c/code> and \u003ccode>}\u003c/code>.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/environment/\">Environment\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>translations\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>A list of translation resources supported by the app, including the fallback configurations for when a desired translation is not available.\u003c/p>\n\u003cp>The \u003ccode>translations\u003c/code> property is available to participants of the \u003ca href=\"/platform/forge/internationalization/\">Internationalization for Forge EAP\u003c/a>. See \u003ca href=\"/platform/forge/manifest-reference/translations/\">Translations\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003c/tbody>\n\u003c/table>\n\n\n\n## App\n\nThe `app` dictionary contains properties about your Forge app. Some of these are populated as part of the\n`forge create` command (for example, `id`).\n\n\u003ctable>\n\u003cthead>\n\u003ctr>\n\u003cth>Property\u003c/th>\n\u003cth>Required\u003c/th>\n\u003cth>Description\u003c/th>\n\u003c/tr>\n\u003c/thead>\n\u003ctbody>\n\u003ctr>\n\u003ctd>\u003ccode>id\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>A unique Atlassian resource identifier (\u003ccode>ari\u003c/code>) assigned to your app.\u003c/td>\n\u003c/tr>\n\u003c!--\n\u003ctr>\n\u003ctd>\u003ccode>name\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>The app's name. Maximum 50 characters. \u003c/td>\n\u003c/tr>\n-->\n\u003ctr>\n\u003ctd>\u003ccode>connect\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>Details specific to \u003ca href=\"/platform/adopting-forge-from-connect/\">Adopting Forge from Connect\u003c/a>.\u003c/p>\n\u003cp>This is required if the manifest has \u003ccode>connectModules\u003c/code>.\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/manifest-reference/#connect\">Connect\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>licensing\u003c/code>\u003c/td>\n\u003ctd>No\u003c/td>\n\u003ctd>\u003cp>The app's licensing state. To enable licensing for your app, add the \u003ccode>enabled\u003c/code> field attribute and set its value to \u003ccode>true\u003c/code>. \u003c/p>\n\u003cp>See \u003ca href=\"/platform/marketplace/listing-forge-apps/#enabling-licensing-for-your-app\">licensing\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>package\u003c/code>\u003c/td>\n\u003ctd>No\u003c/td>\n\u003ctd>\n\u003cp>Settings relating to packaging the Forge application.\u003c/p>\n\u003cp>See \u003ca href=\"#package\">Packaging\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>runtime\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\n\u003cp>Settings relating to the Forge runtime.\u003c/p>\n\u003cp>See \u003ca href=\"#runtimev2\">Runtime\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>storage\u003c/code> \u003c/td>\n\u003ctd>No\u003c/td>\n\u003ctd>\n\u003cp>A list of \u003ci>custom entities\u003c/i> and their respective \u003ci>indexes\u003c/i>.\nCustom entities are user-defined data structures for storing app data. Forge's storage API lets\nyou query data stored in these structures using a wide array of query conditions. These query conditions\nmake it possible to build advanced, complex queries to suit your app's operations.\n\u003c/p>\n\u003cp>See \u003ca href=\"/platform/forge/runtime-reference/custom-entities\">Custom entities\u003c/a> to learn more.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003c/tbody>\n\u003c/table>\n\n\u003ca id=\"runtimev2\">\u003c/a>\n### Runtime\n\n\u003c!--\nThe preview bit is just a subset of this page, so let's remove this banner\n"},{"type":"shortcode","name":"tip","arguments":[],"content":"\nThis section describes a Forge _preview_ feature. Preview features are deemed stable;\nhowever, they remain under active development and may be subject to shorter deprecation\nwindows. Preview features are suitable for early adopters in production environments.\n\nWe release preview features so partners and developers can study, test, and integrate\nthem prior to General Availability (GA). For more information,\nsee [Forge release phases: EAP, Preview, and GA](/platform/forge/whats-coming/#preview).\n"},{"type":"markdown","content":"\n-->\nThe `runtime` property lets you configure the Forge runtime using the following settings:\n\n\u003ctable>\n\u003cthead>\n\u003ctr>\n\u003cth>Setting\u003c/th>\n\u003cth>Required\u003c/th>\n\u003cth>Type\u003c/th>\n\u003cth>Description\u003c/th>\n\u003c/tr>\n\u003c/thead>\n\u003ctbody>\n\u003ctr>\n\u003ctd>\u003ccode>snapshots\u003c/code>\u003c/td>\n\u003ctd>No\u003c/td>\n\u003ctd>\u003ccode>boolean\u003c/code>\u003c/td>\n\u003ctd>Whether a \u003ca href=\"/platform/forge/runtime-reference/legacy-runtime-reference/#snapshots\">snapshot\u003c/a>\nof the app is taken at deployment time. Default value is \u003ccode>true\u003c/code>. This setting\nis only used in the \u003ca href=\"/platform/forge/runtime-reference/legacy-runtime-reference/\">legacy runtime\u003c/a>.\u003c/td>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>name\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\u003ccode>string\u003c/code>\u003c/td>\n\u003ctd>\u003cp>Lets you specify the Forge runtime environment version on which to deploy your app. This field\nsupports the following values:\u003c/p>\n\u003cli>\u003ccode>nodejs18.x\u003c/code> (recommended): specifies the Node.js 18 runtime version. This version runs on\na standard \u003ca href=\"https://nodejs.org/en/blog/release/v18.12.0\">Node.js 18\u003c/a> environment.\nSee \u003ca href=\"/platform/forge/runtime-reference/\">Runtime\u003c/a> for more information about the\nthis runtime version.\u003c/p> \u003c/li>\n\u003cli>\u003ccode>nodejs20.x\u003c/code>: specifies the Node.js 20 runtime version. This version runs on\na standard \u003ca href=\"https://nodejs.org/en/blog/release/v20.16.0\">Node.js 20\u003c/a> environment.\nSee \u003ca href=\"/platform/forge/runtime-reference/\">Runtime\u003c/a> for more information about the\nthis runtime version.\u003c/p> \u003c/li>\n\u003cli>\u003ccode>sandbox\u003c/code>: specifies the legacy version of the Forge runtime. See\n\u003ca href=\"/platform/forge/runtime-reference/legacy-runtime-reference/\"/>Legacy runtime (deprecated)\u003c/a>\nfor more information about this runtime version.\u003c/li>\n\u003c/td>\n\u003c/tr>\n\u003c/tbody>\n\u003c/table>\n\n"},{"type":"shortcode","name":"warning","arguments":[],"content":"\nThe legacy Javascript sandbox runtime is now [deprecated](https://developer.atlassian.com/platform/forge/changelog/#CHANGE-789). This means that Forge can only create new apps on the\n[latest runtime version](/platform/forge/runtime-reference/). In addition:\n\n- From October 29, 2024: Forge apps that haven't been updated since January 1, 2023 will no longer function.\n- From February 28, 2025: _All_ Forge apps still running on the legacy runtime version will no longer function. \n\nIf your app is running on the Javascript sandbox runtime, we strongly advise that you\n[upgrade to the latest runtime](/platform/forge/runtime-reference/legacy-runtime-migrating/).\n"},{"type":"markdown","content":"\n\u003c!--\nFor information about migrating an existing app to the latest Forge runtime, see\n[Migrating from legacy runtime](/platform/forge/runtime-reference/legacy-runtime-migrating/).\n-->\n\n\u003ca id=\"package\">\u003c/a>\n### Packaging (preview)\n\n"},{"type":"shortcode","name":"tip","arguments":[],"content":"\nThis section describes a Forge _preview_ feature. Preview features are deemed stable;\nhowever, they remain under active development and may be subject to shorter deprecation\nwindows. Preview features are suitable for early adopters in production environments.\n\nWe release preview features so partners and developers can study, test, and integrate\nthem prior to General Availability (GA). For more information,\nsee [Forge release phases: EAP, Preview, and GA](/platform/forge/whats-coming/#preview).\n"},{"type":"markdown","content":"\n\nThe `package` property lets you configure how the application's source code is\npackaged during deployment.\n\n\u003ctable>\n\u003cthead>\n\u003ctr>\n\u003cth>Setting\u003c/th>\n\u003cth>Type\u003c/th>\n\u003cth>Description\u003c/th>\n\u003c/tr>\n\u003c/thead>\n\u003ctbody>\n\u003ctr>\n\u003ctd>\u003ccode>extraFiles\u003c/code>\u003c/td>\n\u003ctd>\u003ccode>string[]\u003c/code>\u003c/td>\n\u003ctd>\n\u003cp>\nExtra files to copy to the deployed application. These can include application data,\nconfiguration files or additional programs the application might want to read or launch.\n\u003c/p>\n\u003cp>\nEach item in this list can point to a single file or a\n\u003ca href=\"https://www.npmjs.com/package/glob\">glob pattern\u003c/a>.\n\u003c/p>\n\u003cp>\nWhen the Forge function runs, the files matching the specified patterns are available\nin the application directory.\n\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003c/tbody>\n\u003c/table>\n\n#### Reading packaged files\n\nYou can read packaged files using the [fs module](https://nodejs.org/api/fs.html).\n\n```javascript\nimport { readFileSync } from 'node:fs';\n\nconst data = readFileSync('./file.txt', 'utf8');\n```\n\n#### Executing packaged binaries\n\nIf you intend to add extra executables to your application and call them from\nfunctions, make sure they are compatible with the [Forge runtime environment](/platform/forge/runtime-reference/). You might\nwant to use statically linked executables if possible, or include the required libraries\ntogether with the executable.\n\nYou can execute packaged binaries using the [child_process module](https://nodejs.org/api/child_process.html).\n\n```javascript\nimport { execFileSync } from 'node:child_process';\n\nconst stdout = execFileSync('./binary', ['--args'], {\n stdio: 'pipe',\n encoding: 'utf8',\n});\n```\n\n"},{"type":"shortcode","name":"warning","arguments":[],"content":"\nWhile you can read files and execute binaries packaged with your app, you must not persist customer data to disk or allow long-running child processes to retain it.\nIf you aren't sure whether a process will cache the data, don't allow it to persist beyond a single function invocation.\n\nRefer to [Expanded developer responsibilities](/platform/forge/runtime-reference/#developer-responsibilities) for more information.\n"},{"type":"markdown","content":"\n\n## Connect\n\n[Connect apps that have adopted Forge modules](/platform/adopting-forge-from-connect) can include Connect modules and a Connect key.\n\n\u003ctable>\n\u003cthead>\n\u003ctr>\n\u003cth>Property\u003c/th>\n\u003cth>Required\u003c/th>\n\u003cth>Description\u003c/th>\n\u003c/tr>\n\u003c/thead>\n\u003ctbody>\n\u003ctr>\n\u003ctd>\u003ccode>key\u003c/code>\u003c/td>\n\u003ctd>Yes\u003c/td>\n\u003ctd>\n\u003cp>A key to identify the Connect app and its components.\u003c/p>\n\u003cp>\n\u003ccode>key\u003c/code> is environment specific. See\n\u003ca href=\"/platform/adopting-forge-from-connect/devloop/#handling-app-keys-environments\">how to manage environments when using Forge from your Connect app\u003c/a>.\n\u003c/p>\n\u003cp>Note: The production environment of the app must match the Atlassian Marketplace key.\u003c/p>\n\u003c/tr>\n\u003ctr>\n\u003ctd>\u003ccode>remote\u003c/code>\u003c/td>\n\u003ctd>\u003c/td>\n\u003ctd>\n\u003cp>The key of the \u003ccode>remotes\u003c/code> entry that holds the Connect app baseUrl.\u003c/p>\n\u003cp>This is required if the manifest has \u003ccode>connectModules\u003c/code>.\u003c/p>\n\u003c/td>\n\u003c/tr>\n\u003c/tbody>\n\u003c/table>\n\n### Example\n\n```yaml\nremotes:\n - key: connect-app-server\n baseUrl: https://hello-world-app.example.com\napp:\n connect:\n key: hello-world\n remote: connect-app-server\n```\n\n\n\n\u003c!--\n## Runtime\n\nEach time you deploy or invoke code on Forge, your code runs inside the [sandbox environment](/platform/forge/security/#sandboxing). The `runtime` properties allow you to configure aspects of your app's environment.\n\n\u003ctable>\n \u003cthead>\n \u003ctr>\n \u003cth>Property\u003c/th>\n \u003cth>Type\u003c/th>\n \u003cth>Required\u003c/th>\n \u003cth>Description\u003c/th>\n \u003c/tr>\n \u003c/thead>\n \u003ctbody>\n \u003ctr>\n \u003ctd>\u003ccode>snapshots\u003c/code>\u003c/td>\n \u003ctd>\u003ccode>boolean\u003c/code>\u003c/td>\n \u003ctd>\u003c/td>\n \u003ctd>Whether a snapshot of the app is taken at deployment time. Default value of \u003ccode>true\u003c/code>.\u003c/td>\n \u003c/tr>\n \u003c/tbody>\n\u003c/table>\n\n### Example\n\n```yaml\napp:\n runtime:\n snapshots: true\n```\n-->\n"}],"metadata":{"source":"https://bitbucket.org/atlassian-developers/forge-docs/src/master/content/platform/forge/manifest-reference/index.md?at=master&mode=edit&fileviewer=file-view-default&spa=0","title":"Manifest – Forge apps","description":"Learn how to define your Forge app's capabilities and configuration in the manifest file.","platform":"platform","product":"forge","category":"reference","subcategory":"manifest","date":"2024-11-01","enabledVersion":"1.5800.902"},"deprecatedNavigation":{"title":"Forge","name":"Forge","url":"/platform/forge/","categories":[{"title":"Guides","name":"devguide","url":"/platform/forge/","indexLinkTitle":"About Forge","subcategories":[{"title":"Introduction","name":"intro","expandAlways":true,"items":[{"title":"Forge starter guides","url":"/platform/forge/introduction/forge-starter-guides/","isGroup":true,"groupItems":[{"title":"Why build with Forge","url":"/platform/forge/introduction/why-build-with-forge/"},{"title":"Introduction to the Forge platform","url":"/platform/forge/introduction/the-forge-platform/"}]},{"title":"Build your first app","url":"/platform/forge/getting-started/","isGroup":true,"groupItems":[{"title":"Build a Bitbucket app","url":"/platform/forge/build-a-hello-world-app-in-bitbucket/"},{"title":"Build a Confluence app","url":"/platform/forge/build-a-hello-world-app-in-confluence/"},{"title":"Build a Jira app","url":"/platform/forge/build-a-hello-world-app-in-jira/"},{"title":"Build a Jira Service Management app","url":"/platform/forge/build-a-hello-world-app-in-jira-service-management/"}]}]},{"title":"Extend Atlassian products","name":"extend-atlassian-products","expandAlways":false,"items":[{"title":"Bitbucket Cloud","url":"/platform/forge/extend-bitbucket-cloud/"},{"title":"Rovo (Preview)","url":"/platform/forge/extend-atlassian-products-with-a-forge-rovo-agent/"}]},{"title":"Platform concepts","name":"platform-concepts","expandAlways":false,"items":[{"title":"Forge release phases","url":"/platform/forge/whats-coming/","isGroup":true,"groupItems":[{"title":"Deprecation policy","url":"/platform/forge/deprecation-policy/"}]},{"title":"Manifest","url":"/platform/forge/manifest/"},{"title":"Modules","url":"/platform/forge/modules/"},{"title":"Storage","url":"/platform/forge/storage/"},{"title":"Data residency","url":"/platform/forge/data-residency/"},{"title":"Environments","url":"/platform/forge/environments-and-versions/","isGroup":true,"groupItems":[{"title":"Promote an app to staging or production","url":"/platform/forge/staging-and-production-apps/"}]},{"title":"Versions","url":"/platform/forge/versions/"},{"title":"Tunneling","url":"/platform/forge/tunneling/"},{"title":"User interface","url":"/platform/forge/user-interface/","isGroup":true,"groupItems":[{"title":"UI Kit","url":"/platform/forge/ui-kit/"},{"title":"Custom UI","url":"/platform/forge/custom-ui/"},{"title":"Design tokens and theming","url":"/platform/forge/design-tokens-and-theming/"},{"title":"App context security","url":"/platform/forge/app-context-security"},{"title":"UI modifications","url":"/platform/forge/understanding-ui-modifications/"},{"title":"Internationalization","url":"/platform/forge/internationalization"}]},{"title":"Events","url":"/platform/forge/events/"},{"title":"Forge remote","url":"/platform/forge/remote/","isGroup":true,"groupItems":[{"title":"Remote essentials","url":"/platform/forge/remote/essentials"},{"title":"Calling a remote from a frontend","url":"/platform/forge/remote/calling-from-frontend"},{"title":"Calling a remote from a function","url":"/platform/forge/remote/calling-from-function"},{"title":"Sending events to a remote","url":"/platform/forge/remote/sending-product-events"},{"title":"Configuring scheduled triggers","url":"/platform/forge/remote/scheduled-triggers"},{"title":"Accessing storage with remote","url":"/platform/forge/remote/accessing-storage"},{"title":"Calling product APIs","url":"/platform/forge/remote/calling-product-apis"},{"title":"Performing Bitbucket git operations","url":"/platform/forge/remote/bitbucket-git-operations"},{"title":"Remote observability","url":"/platform/forge/remote/observability"}]},{"title":"Automation with Forge","url":"/platform/forge/automation-with-forge/"},{"title":"Contributors","url":"/platform/forge/contributors/"},{"title":"App observability in third-party tools","url":"/platform/forge/app-observability-in-third-party-tools/"},{"title":"Platform quotas and limits","url":"/platform/forge/platform-quotas-and-limits/"},{"title":"Security","url":"/platform/forge/security/","isGroup":true,"groupItems":[{"title":"Access to Forge apps for unlicensed Jira Service Management users","url":"/platform/forge/access-to-forge-apps-for-unlicensed-jsm-users/"},{"title":"Add scopes to call an Atlassian REST API","url":"/platform/forge/add-scopes-to-call-an-atlassian-rest-api/"},{"title":"Add content security and egress controls","url":"/platform/forge/add-content-security-and-egress-controls/"},{"title":"Runtime egress permissions","url":"/platform/forge/runtime-egress-permissions/"},{"title":"Rotating OAuth 2.0 client ID and secret","url":"/platform/forge/rotating-an-oauth-2.0-client-id-and-secret/"},{"title":"Common issues with external authentication","url":"/platform/forge/common-issues-with-external-authentication/"}]},{"title":"Debugging","url":"/platform/forge/debugging/"},{"title":"Connect module equivalents","url":"/platform/forge/connect-module-equivalents/"}]},{"title":"Tutorials","name":"tutorials","expandAlways":false,"items":[{"title":"Overview","url":"/platform/forge/tutorials-and-guides/"},{"title":"Schedule web triggers","url":"/platform/forge/add-scheduled-trigger/"},{"title":"Debug functions using IntelliJ","url":"/platform/forge/debug-functions-using-intellij/"},{"title":"Debug functions using VS Code","url":"/platform/forge/debug-functions-using-vscode/"},{"title":"Profile app performance with tunnel debugger","url":"/platform/forge/profiling-node-js-app-code-tunnel/"},{"title":"Implement a dynamic profile retriever","url":"/platform/forge/implement-a-dynamic-profile-retriever-with-external-authentication/"},{"title":"Migrate an app from Connect to Forge","url":"/platform/adopting-forge-from-connect/"},{"title":"Migrate an app from UI Kit 1 to UI Kit","url":"/platform/forge/ui-kit/migration-example/"},{"title":"Set up continuous delivery","url":"/platform/forge/set-up-cicd/"},{"title":"Queue app interactions with Storage API","url":"/platform/forge/storage-api-limit-handling/"},{"title":"Use custom entities to store structured data","url":"/platform/forge/custom-entities-store-structured-data/"},{"title":"Use an external OAuth 2.0 API with fetch","url":"/platform/forge/use-an-external-oauth-2.0-api-with-fetch/"},{"title":"Add routing to a full-page app in Jira","url":"/platform/forge/add-routing-to-a-full-page-app/"},{"title":"Use the storage API in Confluence","url":"/platform/forge/create-confluence-macro-with-storage-api"},{"title":"Rovo (Preview)","url":"/platform/forge/build-a-hello-world-rovo-agent/","isGroup":true,"groupItems":[{"title":"Build a Rovo Agent app","url":"/platform/forge/build-a-hello-world-rovo-agent/"},{"title":"Build a Q&A Rovo Agent for Confluence","url":"/platform/forge/build-a-q-and-a-rovo-agent-for-confluence"},{"title":"Build a Jira issue analyst Rovo Agent","url":"/platform/forge/build-a-jira-issue-analyst-rovo-agent"}]},{"title":"Jira","url":"/platform/forge/build-a-custom-ui-app-in-jira/","isGroup":true,"groupItems":[{"title":"Automate Jira with triggers","url":"/platform/forge/automate-jira-using-triggers/"},{"title":"Build a Jira comments summarizer app with OpenAI","url":"/platform/forge/build-jira-comments-summarizer-with-openai/"},{"title":"Use a workflow validator to check issue assignments","url":"/platform/forge/check-jira-issues-assigned-using-workflow-validator/"},{"title":"Build a custom UI app","url":"/platform/forge/build-a-custom-ui-app-in-jira/"}]},{"title":"Jira Service Management","url":"/platform/forge/build-a-custom-ui-app-in-jira-service-management/","isGroup":true,"groupItems":[{"title":"Import third party data into Assets","url":"/platform/forge/assets-import-app/"},{"title":"Use Async Events API to queue jobs to import objects into Assets","url":"/platform/forge/queue-events-with-async-events-api-to-import-assets/"},{"title":"Build a custom UI app","url":"/platform/forge/build-a-custom-ui-app-in-jira-service-management/"}]},{"title":"Confluence","url":"/platform/forge/build-a-custom-ui-app-in-confluence/","isGroup":true,"groupItems":[{"title":"Create a question generator app in multiple languages using i18n","url":"/platform/forge/create-a-question-generator-app-in-multiple-languages-using-i18n"},{"title":"Create a quiz app using UI Kit","url":"/platform/forge/create-a-quiz-app-using-ui-kit/"},{"title":"Add configuration to a macro with UI Kit","url":"/platform/forge/add-configuration-to-a-macro-with-ui-kit/"},{"title":"Create a logo designer app using the Frame component (EAP) ","url":"/platform/forge/ui-kit/components/frame-tutorial"},{"title":"Use space settings and content byline to implement space news","url":"/platform/forge/space-news/"},{"title":"Use content actions to count page macros","url":"/platform/forge/macros-in-the-page/"},{"title":"Build a Custom UI app","url":"/platform/forge/build-a-custom-ui-app-in-confluence/"},{"title":"Build a Confluence keyword extractor with OpenAI","url":"/platform/forge/build-confluence-keyword-extractor-with-openai/"},{"title":"Use highlighted text in a Confluence app","url":"/platform/forge/create-confluence-contextmenu-module/"}]},{"title":"Bitbucket","url":"/platform/forge/automate-bitbucket-using-triggers/","isGroup":true,"groupItems":[{"title":"Automate Bitbucket with triggers","url":"/platform/forge/automate-bitbucket-using-triggers/"},{"title":"Build a pull request title validator with custom merge checks","url":"/platform/forge/build-a-pull-request-title-validator-with-custom-merge-checks/"},{"title":"Orchestrate your builds using Dynamic Pipelines","url":"/platform/forge/orchestrate-your-builds-using-dynamic-pipelines/"}]}]},{"title":"Example apps","name":"examples","expandAlways":false,"items":[{"title":"Bitbucket","url":"/platform/forge/example-apps-bitbucket/"},{"title":"Compass","url":"/platform/forge/example-apps-compass/"},{"title":"Confluence","url":"/platform/forge/example-apps-confluence/"},{"title":"Jira","url":"/platform/forge/example-apps-jira/"},{"title":"Jira Service Management","url":"/platform/forge/example-apps-jsm/"},{"title":"Rovo (Preview)","url":"/platform/forge/example-apps-rovo/"}]},{"title":"Enterprise development","name":"enterprise","expandAlways":false,"items":[{"title":"Use the Forge CLI on a corporate network","url":"/platform/forge/enterprise/use-forge-cli-on-corporate-network/"}]},{"title":"Developer console","name":"developer-console","expandAlways":false,"items":[{"title":"Manage your apps","url":"/platform/forge/manage-your-apps/"},{"title":"Distribute your apps","url":"/platform/forge/distribute-your-apps/"},{"title":"Monitor app metrics","url":"/platform/forge/monitor-app-metrics/","isGroup":true,"groupItems":[{"title":"Monitor invocation metrics","url":"/platform/forge/monitor-invocation-metrics/"},{"title":"Monitor API metrics","url":"/platform/forge/monitor-api-metrics/"},{"title":"Monitor cache metrics (EAP)","url":"/platform/forge/monitor-cache-metrics/"},{"title":"Export app metrics","url":"/platform/forge/export-app-metrics/"}]},{"title":"Monitor app logs","url":"/platform/forge/monitor-app-logs/","isGroup":true,"groupItems":[{"title":"Access app logs","url":"/platform/forge/access-app-logs/"},{"title":"View app logs","url":"/platform/forge/view-app-logs/"},{"title":"Export app logs","url":"/platform/forge/export-app-logs/"}]},{"title":"Alerts","url":"/platform/forge/alerts/","isGroup":true,"groupItems":[{"title":"Create alert rules","url":"/platform/forge/create-alert-rules/"},{"title":"Manage alert rules","url":"/platform/forge/manage-alert-rules/"},{"title":"View open and closed alerts","url":"/platform/forge/view-open-and-closed-alerts/"}]},{"title":"View app installations","url":"/platform/forge/view-app-installations/"},{"title":"View app storage","url":"/platform/forge/view-app-storage/"},{"title":"Manage app contributors","url":"/platform/forge/manage-app-contributors/"}]},{"title":"Legal and privacy guidelines","name":"privacy-guidelines","expandAlways":false,"items":[{"title":"Privacy and security FAQs","url":"/platform/forge/faq-privacy-security/"},{"title":"Shared responsibility model","url":"/platform/forge/shared-responsibility-model/"},{"title":"Forge Terms","url":"/platform/forge/developer-terms/"},{"title":"About the Forge Data Processing Addendum","url":"/platform/forge/about-the-forge-data-processing-addendum/"},{"title":"User privacy guide for app developers","url":"/platform/forge/user-privacy-guidelines/"},{"title":"Logging guidelines for app developers","url":"/platform/forge/logging-guidelines/"}]},{"title":"Design guidelines","name":"design-guidelines","expandAlways":false,"items":[{"title":"Jira full-page modules","url":"/platform/forge/jira-full-page-modules/"}]},{"title":"Feedback","name":"feedback","expandAlways":false,"items":[{"title":"Give feedback","url":"/platform/forge/give-feedback/"},{"title":"Join the Forge developer community","url":"https://community.developer.atlassian.com/c/forge"}]}]},{"title":"Reference","name":"reference","url":"/platform/forge/manifest-reference/","subcategories":[{"title":"CLI","name":"cli-reference","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/cli-reference/"},{"title":"autocomplete","url":"/platform/forge/cli-reference/autocomplete"},{"title":"create","url":"/platform/forge/cli-reference/create"},{"title":"deploy","url":"/platform/forge/cli-reference/deploy"},{"title":"environments","url":"/platform/forge/cli-reference/environments","isGroup":true,"groupItems":[{"title":"create","url":"/platform/forge/cli-reference/environments-create"},{"title":"delete","url":"/platform/forge/cli-reference/environments-delete"},{"title":"list","url":"/platform/forge/cli-reference/environments-list"}]},{"title":"feedback","url":"/platform/forge/cli-reference/feedback"},{"title":"install","url":"/platform/forge/cli-reference/install","isGroup":true,"groupItems":[{"title":"list","url":"/platform/forge/cli-reference/install-list"}]},{"title":"lint","url":"/platform/forge/cli-reference/lint"},{"title":"login","url":"/platform/forge/cli-reference/login"},{"title":"logout","url":"/platform/forge/cli-reference/logout"},{"title":"logs","url":"/platform/forge/cli-reference/logs"},{"title":"providers","url":"/platform/forge/cli-reference/providers","isGroup":true,"groupItems":[{"title":"configure","url":"/platform/forge/cli-reference/providers-configure"}]},{"title":"register","url":"/platform/forge/cli-reference/register"},{"title":"settings","url":"/platform/forge/cli-reference/settings","isGroup":true,"groupItems":[{"title":"list","url":"/platform/forge/cli-reference/settings-list"},{"title":"set","url":"/platform/forge/cli-reference/settings-set"}]},{"title":"storage","url":"/platform/forge/cli-reference/storage","isGroup":true,"groupItems":[{"title":"entities","url":"/platform/forge/cli-reference/storage-entities"}]},{"title":"tunnel","url":"/platform/forge/cli-reference/tunnel"},{"title":"uninstall","url":"/platform/forge/cli-reference/uninstall"},{"title":"variables","url":"/platform/forge/cli-reference/variables","isGroup":true,"groupItems":[{"title":"list","url":"/platform/forge/cli-reference/variables-list"},{"title":"set","url":"/platform/forge/cli-reference/variables-set"},{"title":"unset","url":"/platform/forge/cli-reference/variables-unset"}]},{"title":"webtrigger","url":"/platform/forge/cli-reference/webtrigger"},{"title":"whoami","url":"/platform/forge/cli-reference/whoami"}]},{"title":"Manifest","name":"manifest-reference","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/manifest-reference/"},{"title":"Display conditions","url":"/platform/forge/manifest-reference/display-conditions/","isGroup":true,"groupItems":[{"title":"Usage with Confluence modules","url":"/platform/forge/manifest-reference/display-conditions/confluence/"},{"title":"Usage with Jira modules","url":"/platform/forge/manifest-reference/display-conditions/jira/"}]},{"title":"Endpoint","url":"/platform/forge/manifest-reference/endpoint/"},{"title":"Keyboard shortcuts","url":"/platform/forge/manifest-reference/keyboard-shortcuts/"},{"title":"Permissions","url":"/platform/forge/manifest-reference/permissions/","isGroup":true,"groupItems":[{"title":"Forge scopes","url":"/platform/forge/manifest-reference/scopes-forge/"},{"title":"Bitbucket scopes","url":"/platform/forge/manifest-reference/scopes-product-bitbucket/"},{"title":"Compass scopes","url":"/platform/forge/manifest-reference/scopes-product-compass/"},{"title":"Confluence scopes","url":"/platform/forge/manifest-reference/scopes-product-confluence/"},{"title":"Jira scopes","url":"/platform/forge/manifest-reference/scopes-product-jira/"},{"title":"Jira Software scopes","url":"/platform/forge/manifest-reference/scopes-product-jsw/"},{"title":"Jira Service Management scopes","url":"/platform/forge/manifest-reference/scopes-product-jsm/"}]},{"title":"Providers","url":"/platform/forge/manifest-reference/providers/"},{"title":"Remotes","url":"/platform/forge/manifest-reference/remotes/"},{"title":"Resources","url":"/platform/forge/manifest-reference/resources/"},{"title":"Variables","url":"/platform/forge/manifest-reference/variables/"},{"title":"Translations","url":"/platform/forge/manifest-reference/translations/","isGroup":true,"groupItems":[{"title":"Forge supported locale codes","url":"/platform/forge/manifest-reference/forge-supported-locale-codes/"}]}]},{"title":"Modules","name":"modules","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/manifest-reference/modules/"},{"title":"Bitbucket modules","url":"/platform/forge/manifest-reference/modules/index-bitbucket/","isGroup":true,"groupItems":[{"title":"Custom merge check","url":"/platform/forge/manifest-reference/modules/bitbucket-merge-check/"},{"title":"Dynamic Pipelines provider","url":"/platform/forge/manifest-reference/modules/bitbucket-dynamic-pipelines-provider/"},{"title":"Repository code overview card","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-code-overview-card/"},{"title":"Repository code overview action","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-code-overview-action/"},{"title":"Repository pull request card","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-pull-request-card/"},{"title":"Repository pull request action","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-pull-request-action/"},{"title":"Repository main menu page","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-main-menu-page/"},{"title":"Repository settings menu page","url":"/platform/forge/manifest-reference/modules/bitbucket-repository-settings-menu-page/"},{"title":"Workspace settings menu page","url":"/platform/forge/manifest-reference/modules/bitbucket-workspace-settings-menu-page/"}]},{"title":"Common modules","url":"/platform/forge/manifest-reference/modules/index-common/","isGroup":true,"groupItems":[{"title":"Consumer","url":"/platform/forge/manifest-reference/modules/consumer/"},{"title":"Function","url":"/platform/forge/manifest-reference/modules/function/"},{"title":"Scheduled trigger","url":"/platform/forge/manifest-reference/modules/scheduled-trigger/"},{"title":"Trigger","url":"/platform/forge/manifest-reference/modules/trigger/"},{"title":"Web trigger","url":"/platform/forge/manifest-reference/modules/web-trigger/"}]},{"title":"Compass modules","url":"/platform/forge/manifest-reference/modules/index-compass/","isGroup":true,"groupItems":[{"title":"Admin page","url":"/platform/forge/manifest-reference/modules/compass-admin-page/"},{"title":"Component page","url":"/platform/forge/manifest-reference/modules/compass-component-page/"},{"title":"Data provider","url":"/platform/forge/manifest-reference/modules/compass-data-provider/"},{"title":"Global page","url":"/platform/forge/manifest-reference/modules/compass-global-page/"},{"title":"Team page","url":"/platform/forge/manifest-reference/modules/compass-team-page/"}]},{"title":"Confluence modules","url":"/platform/forge/manifest-reference/modules/index-confluence/","isGroup":true,"groupItems":[{"title":"Content action","url":"/platform/forge/manifest-reference/modules/confluence-content-action/"},{"title":"Content byline item","url":"/platform/forge/manifest-reference/modules/confluence-content-byline-item/"},{"title":"Context menu","url":"/platform/forge/manifest-reference/modules/confluence-context-menu/"},{"title":"Custom content","url":"/platform/forge/manifest-reference/modules/confluence-custom-content/"},{"title":"Global page","url":"/platform/forge/manifest-reference/modules/confluence-global-page/"},{"title":"Global settings","url":"/platform/forge/manifest-reference/modules/confluence-global-settings/"},{"title":"Homepage feed","url":"/platform/forge/manifest-reference/modules/confluence-homepage-feed/"},{"title":"Space page","url":"/platform/forge/manifest-reference/modules/confluence-space-page/"},{"title":"Space settings","url":"/platform/forge/manifest-reference/modules/confluence-space-settings/"},{"title":"Macro","url":"/platform/forge/manifest-reference/modules/macro/"}]},{"title":"Jira modules","url":"/platform/forge/manifest-reference/modules/index-jira/","isGroup":true,"groupItems":[{"title":"Admin page","url":"/platform/forge/manifest-reference/modules/jira-admin-page/"},{"title":"Custom field","url":"/platform/forge/manifest-reference/modules/jira-custom-field/"},{"title":"Custom field type","url":"/platform/forge/manifest-reference/modules/jira-custom-field-type/"},{"title":"Dashboard background script","url":"/platform/forge/manifest-reference/modules/jira-dashboard-background-script/"},{"title":"Dashboard gadget","url":"/platform/forge/manifest-reference/modules/jira-dashboard-gadget/"},{"title":"Entity property","url":"/platform/forge/manifest-reference/modules/jira-entity-property/"},{"title":"Global page","url":"/platform/forge/manifest-reference/modules/jira-global-page/"},{"title":"Global permission","url":"/platform/forge/manifest-reference/modules/jira-global-permission/"},{"title":"Issue action","url":"/platform/forge/manifest-reference/modules/jira-issue-action/"},{"title":"Issue activity","url":"/platform/forge/manifest-reference/modules/jira-issue-activity/"},{"title":"Issue glance","url":"/platform/forge/manifest-reference/modules/jira-issue-glance/"},{"title":"Issue context","url":"/platform/forge/manifest-reference/modules/jira-issue-context/"},{"title":"Issue panel","url":"/platform/forge/manifest-reference/modules/jira-issue-panel/"},{"title":"Issue view background script","url":"/platform/forge/manifest-reference/modules/jira-issue-view-background-script/"},{"title":"JQL function (preview)","url":"/platform/forge/manifest-reference/modules/jql-function/"},{"title":"Project page","url":"/platform/forge/manifest-reference/modules/jira-project-page/"},{"title":"Project permission","url":"/platform/forge/manifest-reference/modules/jira-project-permission/"},{"title":"Project settings page","url":"/platform/forge/manifest-reference/modules/jira-project-settings-page/"},{"title":"Time tracking provider (preview)","url":"/platform/forge/manifest-reference/modules/jira-time-tracking-provider/"},{"title":"UI modifications","url":"/platform/forge/manifest-reference/modules/jira-ui-modifications/"},{"title":"Workflow validator (preview)","url":"/platform/forge/manifest-reference/modules/jira-workflow-validator/"},{"title":"Workflow condition (preview)","url":"/platform/forge/manifest-reference/modules/jira-workflow-condition/"},{"title":"Workflow post function (preview)","url":"/platform/forge/manifest-reference/modules/jira-workflow-post-function/"}]},{"title":"Jira Service Management modules","url":"/platform/forge/manifest-reference/modules/index-jsm/","isGroup":true,"groupItems":[{"title":"Assets Import Type","url":"/platform/forge/manifest-reference/modules/jira-service-management-assets-import-type/"},{"title":"Organization panel","url":"/platform/forge/manifest-reference/modules/jira-service-management-organization-panel/"},{"title":"Portal footer","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-footer/"},{"title":"Portal header","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-header/"},{"title":"Portal profile panel","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-profile-panel/"},{"title":"Portal request create property panel","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-create-property-panel/"},{"title":"Portal request detail","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-detail/"},{"title":"Portal request detail panel","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-detail-panel/"},{"title":"Portal request view action","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-view-action/"},{"title":"Portal subheader","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-subheader/"},{"title":"Portal user menu action","url":"/platform/forge/manifest-reference/modules/jira-service-management-portal-user-menu-action/"},{"title":"Queue page","url":"/platform/forge/manifest-reference/modules/jira-service-management-queue-page/"}]},{"title":"Connect module equivalents","url":"/platform/forge/manifest-reference/modules/connect-module-equivalents/"},{"title":"Rovo modules (Preview)","url":"/platform/forge/manifest-reference/modules/rovo-index/","isGroup":true,"groupItems":[{"title":"Rovo Agent","url":"/platform/forge/manifest-reference/modules/rovo-agent/"},{"title":"Action","url":"/platform/forge/manifest-reference/modules/rovo-action/"}]}]},{"title":"Functions","name":"functions","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/function-reference/index/"},{"title":"Arguments","url":"/platform/forge/function-reference/arguments/"},{"title":"Runtimes","url":"/platform/forge/runtime-reference/","isGroup":true,"groupItems":[{"title":"Node.js","url":"/platform/forge/function-reference/nodejs-runtime/"},{"title":"Upgrading from legacy runtime","url":"/platform/forge/runtime-reference/legacy-runtime-migrating/"},{"title":"Legacy runtime (deprecated)","url":"/platform/forge/runtime-reference/legacy-runtime-reference/"}]},{"title":"Forge resolver","url":"/platform/forge/runtime-reference/forge-resolver/"},{"title":"Scheduled triggers","url":"/platform/forge/function-reference/scheduled-trigger/"},{"title":"Web triggers","url":"/platform/forge/runtime-reference/web-trigger/","isGroup":true,"groupItems":[{"title":"Basic usage","url":"/platform/forge/runtime-reference/web-trigger/"},{"title":"Generating a webtrigger URL via SDK","url":"/platform/forge/runtime-reference/web-trigger-api/"}]},{"title":"Async functions","url":"/platform/forge/runtime-reference/async-events-api/","isGroup":true,"groupItems":[{"title":"Basic usage","url":"/platform/forge/runtime-reference/async-events-api/"},{"title":"Error handling","url":"/platform/forge/runtime-reference/async-events-api-error-handling/"}]},{"title":"Product REST APIs","url":"/platform/forge/apis-reference/product-rest-api-reference/","isGroup":true,"groupItems":[{"title":"Bitbucket API requests","url":"/platform/forge/apis-reference/fetch-api-product.requestbitbucket/"},{"title":"Confluence API requests","url":"/platform/forge/apis-reference/fetch-api-product.requestconfluence/"},{"title":"Jira API requests","url":"/platform/forge/apis-reference/fetch-api-product.requestjira/"},{"title":"GraphQL API requests","url":"/platform/forge/apis-reference/fetch-api-product.requestgraph/"}]},{"title":"Fetch APIs","url":"/platform/forge/runtime-reference/fetch-api/","isGroup":true,"groupItems":[{"title":"Basic fetch client","url":"/platform/forge/runtime-reference/fetch-api.basic/"},{"title":"External authentication","url":"/platform/forge/runtime-reference/external-fetch-api/"}]},{"title":"Invoke Remote API","url":"/platform/forge/runtime-reference/invoke-remote-api/"},{"title":"App context API","url":"/platform/forge/runtime-reference/app-context-api/"},{"title":"Privacy API","url":"/platform/forge/runtime-reference/privacy-api/"},{"title":"Authorize API","url":"/platform/forge/runtime-reference/authorize-api/"}]},{"title":"Storage","name":"storage","items":[{"title":"Overview","url":"/platform/forge/runtime-reference/storage-api/"},{"title":"Key-Value Store","url":"/platform/forge/runtime-reference/storage-api-basic/","isGroup":true,"groupItems":[{"title":"Storing data","url":"/platform/forge/runtime-reference/storage-api-basic-api/"},{"title":"Querying data","url":"/platform/forge/runtime-reference/storage-api-query/"},{"title":"Encrypting stored data","url":"/platform/forge/runtime-reference/storage-api-secret/"}]},{"title":"Custom Entity Store","url":"/platform/forge/storage-reference/storage-api-custom-entities/","isGroup":true,"groupItems":[{"title":"Defining entities","url":"/platform/forge/runtime-reference/custom-entities/"},{"title":"Storing entities","url":"/platform/forge/runtime-reference/storage-api-custom-entities/"},{"title":"Querying data","url":"/platform/forge/runtime-reference/storage-api-query-complex/"}]},{"title":"SQL (EAP)","url":"/platform/forge/storage-reference/sql/","isGroup":true,"groupItems":[{"title":"Tutorial","url":"/platform/forge/storage-reference/sql-tutorial/"},{"title":"Execute SQL operations","url":"/platform/forge/storage-reference/sql-api/"},{"title":"Monitoring SQL metrics","url":"/platform/forge/monitor-sql-metrics/"},{"title":"Error handling","url":"/platform/forge/storage-reference/sql-handling-errors/"}]},{"title":"Cache (EAP)","url":"/platform/forge/storage-reference/storage-cache-api/","isGroup":true,"groupItems":[{"title":"Caching data","url":"/platform/forge/storage-reference/cache/"},{"title":"Error handling","url":"/platform/forge/storage-reference/cache-handling-errors/"}]}]},{"title":"User Interface","name":"user-interface","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/ui-kit/overview/"},{"title":"UI Kit components","url":"/platform/forge/ui-kit/components/","isGroup":true,"groupItems":[{"title":"Badge","url":"/platform/forge/ui-kit/components/badge/"},{"title":"Box","url":"/platform/forge/ui-kit/components/box/"},{"title":"Button","url":"/platform/forge/ui-kit/components/button/"},{"title":"Button group","url":"/platform/forge/ui-kit/components/button-group/"},{"title":"Calendar (Preview)","url":"/platform/forge/ui-kit/components/calendar/"},{"title":"Chart - Bar (EAP)","url":"/platform/forge/ui-kit/components/bar-chart/"},{"title":"Chart - Horizontal bar (EAP)","url":"/platform/forge/ui-kit/components/horizontal-bar-chart/"},{"title":"Chart - Horizontal stack bar (EAP)","url":"/platform/forge/ui-kit/components/horizontal-stack-bar-chart/"},{"title":"Chart - Line (EAP)","url":"/platform/forge/ui-kit/components/line-chart/"},{"title":"Chart - Pie (EAP)","url":"/platform/forge/ui-kit/components/pie-chart/"},{"title":"Chart - Single value (EAP)","url":"/platform/forge/ui-kit/components/single-value-chart/"},{"title":"Chart - Stack bar (EAP)","url":"/platform/forge/ui-kit/components/stack-bar-chart/"},{"title":"Checkbox","url":"/platform/forge/ui-kit/components/checkbox/"},{"title":"Checkbox group (Preview)","url":"/platform/forge/ui-kit/components/checkbox-group/"},{"title":"Code","url":"/platform/forge/ui-kit/components/code/"},{"title":"Code block","url":"/platform/forge/ui-kit/components/code-block/"},{"title":"Date picker","url":"/platform/forge/ui-kit/components/date-picker/"},{"title":"Dynamic table","url":"/platform/forge/ui-kit/components/dynamic-table/"},{"title":"Empty state (Preview)","url":"/platform/forge/ui-kit/components/empty-state/"},{"title":"Form","url":"/platform/forge/ui-kit/components/form/"},{"title":"Frame (EAP)","url":"/platform/forge/ui-kit/components/frame"},{"title":"Heading","url":"/platform/forge/ui-kit/components/heading/"},{"title":"Icon","url":"/platform/forge/ui-kit/components/icon/"},{"title":"Image","url":"/platform/forge/ui-kit/components/image/"},{"title":"Inline","url":"/platform/forge/ui-kit/components/inline/"},{"title":"Inline edit (Preview)","url":"/platform/forge/ui-kit/components/inline-edit/"},{"title":"Link","url":"/platform/forge/ui-kit/components/link/"},{"title":"List (Preview)","url":"/platform/forge/ui-kit/components/list/"},{"title":"Lozenge","url":"/platform/forge/ui-kit/components/lozenge/"},{"title":"Modal","url":"/platform/forge/ui-kit/components/modal/"},{"title":"Popup (Preview)","url":"/platform/forge/ui-kit/components/popup/"},{"title":"Progress bar","url":"/platform/forge/ui-kit/components/progress-bar/"},{"title":"Progress tracker","url":"/platform/forge/ui-kit/components/progress-tracker/"},{"title":"Radio","url":"/platform/forge/ui-kit/components/radio/"},{"title":"Radio group","url":"/platform/forge/ui-kit/components/radio-group/"},{"title":"Range","url":"/platform/forge/ui-kit/components/range/"},{"title":"Section message","url":"/platform/forge/ui-kit/components/section-message/"},{"title":"Select","url":"/platform/forge/ui-kit/components/select/"},{"title":"Spinner","url":"/platform/forge/ui-kit/components/spinner/"},{"title":"Stack","url":"/platform/forge/ui-kit/components/stack/"},{"title":"Tabs","url":"/platform/forge/ui-kit/components/tabs/"},{"title":"Tag","url":"/platform/forge/ui-kit/components/tag/"},{"title":"Tag group","url":"/platform/forge/ui-kit/components/tag-group/"},{"title":"Text","url":"/platform/forge/ui-kit/components/text/"},{"title":"Text area","url":"/platform/forge/ui-kit/components/text-area/"},{"title":"Text field","url":"/platform/forge/ui-kit/components/textfield/"},{"title":"Time picker (Preview)","url":"/platform/forge/ui-kit/components/time-picker/"},{"title":"Toggle","url":"/platform/forge/ui-kit/components/toggle/"},{"title":"Tooltip","url":"/platform/forge/ui-kit/components/tooltip/"},{"title":"User","url":"/platform/forge/ui-kit/components/user/"},{"title":"User group","url":"/platform/forge/ui-kit/components/user-group/"},{"title":"User picker","url":"/platform/forge/ui-kit/components/user-picker/"},{"title":"XCSS","url":"/platform/forge/ui-kit/components/xcss/"}]},{"title":"Jira UI Kit components","url":"/platform/forge/ui-kit/jira-components/","isGroup":true,"groupItems":[{"title":"Custom field edit (Preview)","url":"/platform/forge/ui-kit/jira-components/custom-field-edit/"}]},{"title":"UI Kit hooks","url":"/platform/forge/ui-kit/hooks/hooks-reference/","isGroup":true,"groupItems":[{"title":"useConfig","url":"/platform/forge/ui-kit/hooks/use-config/"},{"title":"useContentProperty","url":"/platform/forge/ui-kit/hooks/use-content-property/"},{"title":"useForm","url":"/platform/forge/ui-kit/hooks/use-form/"},{"title":"useIssueProperty","url":"/platform/forge/ui-kit/hooks/use-issue-property/"},{"title":"useProductContext","url":"/platform/forge/ui-kit/hooks/use-product-context/"},{"title":"useSpaceProperty","url":"/platform/forge/ui-kit/hooks/use-space-property/"},{"title":"useTranslation","url":"/platform/forge/ui-kit/hooks/use-translation/"}]},{"title":"Forge bridge APIs","url":"/platform/forge/apis-reference/ui-api-bridge/bridge","isGroup":true,"groupItems":[{"title":"events","url":"/platform/forge/apis-reference/ui-api-bridge/events/"},{"title":"i18n","url":"/platform/forge/apis-reference/ui-api-bridge/i18n/"},{"title":"invoke","url":"/platform/forge/apis-reference/ui-api-bridge/invoke/"},{"title":"invokeRemote","url":"/platform/forge/apis-reference/ui-api-bridge/invokeRemote/"},{"title":"Modal","url":"/platform/forge/apis-reference/ui-api-bridge/modal/"},{"title":"requestBitbucket","url":"/platform/forge/apis-reference/ui-api-bridge/requestBitbucket/"},{"title":"requestConfluence","url":"/platform/forge/apis-reference/ui-api-bridge/requestConfluence/"},{"title":"requestJira","url":"/platform/forge/apis-reference/ui-api-bridge/requestJira/"},{"title":"router","url":"/platform/forge/apis-reference/ui-api-bridge/router/"},{"title":"showFlag","url":"/platform/forge/apis-reference/ui-api-bridge/showFlag/"},{"title":"view","url":"/platform/forge/apis-reference/ui-api-bridge/view/"}]},{"title":"Jira bridge APIs","url":"/platform/forge/apis-reference/jira-api-bridge/bridge/","isGroup":true,"groupItems":[{"title":"ViewIssueModal","url":"/platform/forge/apis-reference/jira-api-bridge/viewIssueModal/"},{"title":"CreateIssueModal","url":"/platform/forge/apis-reference/jira-api-bridge/createIssueModal/"},{"title":"uiModifications","url":"/platform/forge/apis-reference/jira-api-bridge/uiModifications/"},{"title":"workflowRules (EAP)","url":"/platform/forge/apis-reference/jira-api-bridge/workflowRules/"}]},{"title":"Custom UI","url":"/platform/forge/custom-ui/iframe"},{"title":"Upgrade UI Kit versions","url":"/platform/forge/ui-kit/upgrade-guides","isGroup":true,"groupItems":[{"title":"Upgrade from UI Kit 1 to UI Kit latest version","url":"/platform/forge/ui-kit/upgrade-to-ui-kit-latest/"},{"title":"Upgrade to @forge/react major version 10","url":"/platform/forge/ui-kit/version-10-changes/"}]},{"title":"Previous versions","url":"/platform/forge/ui-kit-components/previous_versions","isGroup":true,"groupItems":[{"title":"UI Kit - @forge/react@9","url":"/platform/forge/ui-kit-2/all-uikprev-components/"},{"title":"UI Kit 1 overview","url":"/platform/forge/ui-kit-components/ui1-about/"},{"title":"UI Kit 1 components","url":"/platform/forge/ui-kit-components/uik1_all/"},{"title":"UI Kit 1 module components","url":"/platform/forge/ui-kit-components/uik1_modules/"},{"title":"UI Kit 1 hooks","url":"/platform/forge/ui-kit-components/uik1_hooks/"}]}]},{"title":"Events","name":"events-reference","expandAlways":true,"items":[{"title":"Overview","url":"/platform/forge/events-reference/"},{"title":"Product events","url":"/platform/forge/events-reference/product_events/","isGroup":true,"groupItems":[{"title":"Bitbucket events","url":"/platform/forge/events-reference/bitbucket/"},{"title":"Compass events","url":"/platform/forge/events-reference/compass/"},{"title":"Confluence events","url":"/platform/forge/events-reference/confluence/"},{"title":"Jira events","url":"/platform/forge/events-reference/jira/"},{"title":"Jira Software events","url":"/platform/forge/events-reference/jira-software/"}]},{"title":"Life cycle events","url":"/platform/forge/events-reference/life-cycle/"},{"title":"Data security policy events","url":"/platform/forge/events-reference/data-security-policy-events/"},{"title":"Scheduled trigger events","url":"/platform/forge/events-reference/scheduled-trigger/"},{"title":"Web trigger events","url":"/platform/forge/events-reference/web-trigger/"}]}]},{"title":"Get help","name":"help","url":"/platform/forge/get-help/"},{"name":"changelog","title":"Changelog","url":"/platform/forge/changelog/","apiGroups":["forge-core-platform","forge-jira-cloud-platform","forge-jsm-cloud","forge-jsw-cloud","forge-confluence-cloud"]}],"enabledVersion":"1.5800.902"},"navigation":[{"label":"CLI","href":"/platform/forge/cli-reference/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/cli-reference/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"autocomplete","href":"/platform/forge/cli-reference/autocomplete/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"create","href":"/platform/forge/cli-reference/create/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"deploy","href":"/platform/forge/cli-reference/deploy/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"environments","href":"/platform/forge/cli-reference/environments/","expandState":"collapsed","childNavigationNodes":[{"label":"create","href":"/platform/forge/cli-reference/environments-create/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"delete","href":"/platform/forge/cli-reference/environments-delete/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"list","href":"/platform/forge/cli-reference/environments-list/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"feedback","href":"/platform/forge/cli-reference/feedback/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"install","href":"/platform/forge/cli-reference/install/","expandState":"collapsed","childNavigationNodes":[{"label":"list","href":"/platform/forge/cli-reference/install-list/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"lint","href":"/platform/forge/cli-reference/lint/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"login","href":"/platform/forge/cli-reference/login/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"logout","href":"/platform/forge/cli-reference/logout/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"logs","href":"/platform/forge/cli-reference/logs/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"providers","href":"/platform/forge/cli-reference/providers/","expandState":"collapsed","childNavigationNodes":[{"label":"configure","href":"/platform/forge/cli-reference/providers-configure/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"register","href":"/platform/forge/cli-reference/register/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"settings","href":"/platform/forge/cli-reference/settings/","expandState":"collapsed","childNavigationNodes":[{"label":"list","href":"/platform/forge/cli-reference/settings-list/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"set","href":"/platform/forge/cli-reference/settings-set/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"storage","href":"/platform/forge/cli-reference/storage/","expandState":"collapsed","childNavigationNodes":[{"label":"entities","href":"/platform/forge/cli-reference/storage-entities/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"tunnel","href":"/platform/forge/cli-reference/tunnel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"uninstall","href":"/platform/forge/cli-reference/uninstall/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"variables","href":"/platform/forge/cli-reference/variables/","expandState":"collapsed","childNavigationNodes":[{"label":"list","href":"/platform/forge/cli-reference/variables-list/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"set","href":"/platform/forge/cli-reference/variables-set/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"unset","href":"/platform/forge/cli-reference/variables-unset/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"webtrigger","href":"/platform/forge/cli-reference/webtrigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"whoami","href":"/platform/forge/cli-reference/whoami/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Manifest","href":"/platform/forge/manifest-reference/","expandState":"expanded","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/manifest-reference/","expandState":"expanded","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Display conditions","href":"/platform/forge/manifest-reference/display-conditions/","expandState":"collapsed","childNavigationNodes":[{"label":"Usage with Confluence modules","href":"/platform/forge/manifest-reference/display-conditions/confluence/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Usage with Jira modules","href":"/platform/forge/manifest-reference/display-conditions/jira/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Endpoint","href":"/platform/forge/manifest-reference/endpoint/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Keyboard shortcuts","href":"/platform/forge/manifest-reference/keyboard-shortcuts/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Permissions","href":"/platform/forge/manifest-reference/permissions/","expandState":"collapsed","childNavigationNodes":[{"label":"Forge scopes","href":"/platform/forge/manifest-reference/scopes-forge/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Bitbucket scopes","href":"/platform/forge/manifest-reference/scopes-product-bitbucket/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Compass scopes","href":"/platform/forge/manifest-reference/scopes-product-compass/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Confluence scopes","href":"/platform/forge/manifest-reference/scopes-product-confluence/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira scopes","href":"/platform/forge/manifest-reference/scopes-product-jira/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira Software scopes","href":"/platform/forge/manifest-reference/scopes-product-jsw/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira Service Management scopes","href":"/platform/forge/manifest-reference/scopes-product-jsm/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Providers","href":"/platform/forge/manifest-reference/providers/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Remotes","href":"/platform/forge/manifest-reference/remotes/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Resources","href":"/platform/forge/manifest-reference/resources/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Variables","href":"/platform/forge/manifest-reference/variables/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Translations","href":"/platform/forge/manifest-reference/translations/","expandState":"collapsed","childNavigationNodes":[{"label":"Forge supported locale codes","href":"/platform/forge/manifest-reference/forge-supported-locale-codes/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Modules","href":"/platform/forge/manifest-reference/modules/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/manifest-reference/modules/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Bitbucket modules","href":"/platform/forge/manifest-reference/modules/index-bitbucket/","expandState":"collapsed","childNavigationNodes":[{"label":"Custom merge check","href":"/platform/forge/manifest-reference/modules/bitbucket-merge-check/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Dynamic Pipelines provider","href":"/platform/forge/manifest-reference/modules/bitbucket-dynamic-pipelines-provider/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository code overview card","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-code-overview-card/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository code overview action","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-code-overview-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository pull request card","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-pull-request-card/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository pull request action","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-pull-request-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository main menu page","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-main-menu-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Repository settings menu page","href":"/platform/forge/manifest-reference/modules/bitbucket-repository-settings-menu-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Workspace settings menu page","href":"/platform/forge/manifest-reference/modules/bitbucket-workspace-settings-menu-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Common modules","href":"/platform/forge/manifest-reference/modules/index-common/","expandState":"collapsed","childNavigationNodes":[{"label":"Consumer","href":"/platform/forge/manifest-reference/modules/consumer/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Function","href":"/platform/forge/manifest-reference/modules/function/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Scheduled trigger","href":"/platform/forge/manifest-reference/modules/scheduled-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Trigger","href":"/platform/forge/manifest-reference/modules/trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Web trigger","href":"/platform/forge/manifest-reference/modules/web-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Compass modules","href":"/platform/forge/manifest-reference/modules/index-compass/","expandState":"collapsed","childNavigationNodes":[{"label":"Admin page","href":"/platform/forge/manifest-reference/modules/compass-admin-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Component page","href":"/platform/forge/manifest-reference/modules/compass-component-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Data provider","href":"/platform/forge/manifest-reference/modules/compass-data-provider/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Global page","href":"/platform/forge/manifest-reference/modules/compass-global-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Team page","href":"/platform/forge/manifest-reference/modules/compass-team-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Confluence modules","href":"/platform/forge/manifest-reference/modules/index-confluence/","expandState":"collapsed","childNavigationNodes":[{"label":"Content action","href":"/platform/forge/manifest-reference/modules/confluence-content-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Content byline item","href":"/platform/forge/manifest-reference/modules/confluence-content-byline-item/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Context menu","href":"/platform/forge/manifest-reference/modules/confluence-context-menu/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Custom content","href":"/platform/forge/manifest-reference/modules/confluence-custom-content/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Global page","href":"/platform/forge/manifest-reference/modules/confluence-global-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Global settings","href":"/platform/forge/manifest-reference/modules/confluence-global-settings/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Homepage feed","href":"/platform/forge/manifest-reference/modules/confluence-homepage-feed/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Space page","href":"/platform/forge/manifest-reference/modules/confluence-space-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Space settings","href":"/platform/forge/manifest-reference/modules/confluence-space-settings/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Macro","href":"/platform/forge/manifest-reference/modules/macro/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Jira modules","href":"/platform/forge/manifest-reference/modules/index-jira/","expandState":"collapsed","childNavigationNodes":[{"label":"Admin page","href":"/platform/forge/manifest-reference/modules/jira-admin-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Custom field","href":"/platform/forge/manifest-reference/modules/jira-custom-field/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Custom field type","href":"/platform/forge/manifest-reference/modules/jira-custom-field-type/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Dashboard background script","href":"/platform/forge/manifest-reference/modules/jira-dashboard-background-script/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Dashboard gadget","href":"/platform/forge/manifest-reference/modules/jira-dashboard-gadget/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Entity property","href":"/platform/forge/manifest-reference/modules/jira-entity-property/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Global page","href":"/platform/forge/manifest-reference/modules/jira-global-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Global permission","href":"/platform/forge/manifest-reference/modules/jira-global-permission/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue action","href":"/platform/forge/manifest-reference/modules/jira-issue-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue activity","href":"/platform/forge/manifest-reference/modules/jira-issue-activity/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue glance","href":"/platform/forge/manifest-reference/modules/jira-issue-glance/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue context","href":"/platform/forge/manifest-reference/modules/jira-issue-context/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue panel","href":"/platform/forge/manifest-reference/modules/jira-issue-panel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Issue view background script","href":"/platform/forge/manifest-reference/modules/jira-issue-view-background-script/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"JQL function (preview)","href":"/platform/forge/manifest-reference/modules/jql-function/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Project page","href":"/platform/forge/manifest-reference/modules/jira-project-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Project permission","href":"/platform/forge/manifest-reference/modules/jira-project-permission/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Project settings page","href":"/platform/forge/manifest-reference/modules/jira-project-settings-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Time tracking provider (preview)","href":"/platform/forge/manifest-reference/modules/jira-time-tracking-provider/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI modifications","href":"/platform/forge/manifest-reference/modules/jira-ui-modifications/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Workflow validator (preview)","href":"/platform/forge/manifest-reference/modules/jira-workflow-validator/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Workflow condition (preview)","href":"/platform/forge/manifest-reference/modules/jira-workflow-condition/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Workflow post function (preview)","href":"/platform/forge/manifest-reference/modules/jira-workflow-post-function/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Jira Service Management modules","href":"/platform/forge/manifest-reference/modules/index-jsm/","expandState":"collapsed","childNavigationNodes":[{"label":"Assets Import Type","href":"/platform/forge/manifest-reference/modules/jira-service-management-assets-import-type/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Organization panel","href":"/platform/forge/manifest-reference/modules/jira-service-management-organization-panel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal footer","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-footer/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal header","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-header/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal profile panel","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-profile-panel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal request create property panel","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-create-property-panel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal request detail","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-detail/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal request detail panel","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-detail-panel/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal request view action","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-request-view-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal subheader","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-subheader/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Portal user menu action","href":"/platform/forge/manifest-reference/modules/jira-service-management-portal-user-menu-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Queue page","href":"/platform/forge/manifest-reference/modules/jira-service-management-queue-page/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Connect module equivalents","href":"/platform/forge/manifest-reference/modules/connect-module-equivalents/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Rovo modules (Preview)","href":"/platform/forge/manifest-reference/modules/rovo-index/","expandState":"collapsed","childNavigationNodes":[{"label":"Rovo Agent","href":"/platform/forge/manifest-reference/modules/rovo-agent/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Action","href":"/platform/forge/manifest-reference/modules/rovo-action/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Functions","href":"/platform/forge/function-reference/index/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/function-reference/index/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Arguments","href":"/platform/forge/function-reference/arguments/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Runtimes","href":"/platform/forge/runtime-reference/","expandState":"collapsed","childNavigationNodes":[{"label":"Node.js","href":"/platform/forge/function-reference/nodejs-runtime/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Upgrading from legacy runtime","href":"/platform/forge/runtime-reference/legacy-runtime-migrating/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Legacy runtime (deprecated)","href":"/platform/forge/runtime-reference/legacy-runtime-reference/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Forge resolver","href":"/platform/forge/runtime-reference/forge-resolver/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Scheduled triggers","href":"/platform/forge/function-reference/scheduled-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Web triggers","href":"/platform/forge/runtime-reference/web-trigger/","expandState":"collapsed","childNavigationNodes":[{"label":"Basic usage","href":"/platform/forge/runtime-reference/web-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Generating a webtrigger URL via SDK","href":"/platform/forge/runtime-reference/web-trigger-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Async functions","href":"/platform/forge/runtime-reference/async-events-api/","expandState":"collapsed","childNavigationNodes":[{"label":"Basic usage","href":"/platform/forge/runtime-reference/async-events-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Error handling","href":"/platform/forge/runtime-reference/async-events-api-error-handling/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Product REST APIs","href":"/platform/forge/apis-reference/product-rest-api-reference/","expandState":"collapsed","childNavigationNodes":[{"label":"Bitbucket API requests","href":"/platform/forge/apis-reference/fetch-api-product.requestbitbucket/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Confluence API requests","href":"/platform/forge/apis-reference/fetch-api-product.requestconfluence/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira API requests","href":"/platform/forge/apis-reference/fetch-api-product.requestjira/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"GraphQL API requests","href":"/platform/forge/apis-reference/fetch-api-product.requestgraph/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Fetch APIs","href":"/platform/forge/runtime-reference/fetch-api/","expandState":"collapsed","childNavigationNodes":[{"label":"Basic fetch client","href":"/platform/forge/runtime-reference/fetch-api.basic/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"External authentication","href":"/platform/forge/runtime-reference/external-fetch-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Invoke Remote API","href":"/platform/forge/runtime-reference/invoke-remote-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"App context API","href":"/platform/forge/runtime-reference/app-context-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Privacy API","href":"/platform/forge/runtime-reference/privacy-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Authorize API","href":"/platform/forge/runtime-reference/authorize-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Storage","href":"/platform/forge/runtime-reference/storage-api/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/runtime-reference/storage-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Key-Value Store","href":"/platform/forge/runtime-reference/storage-api-basic/","expandState":"collapsed","childNavigationNodes":[{"label":"Storing data","href":"/platform/forge/runtime-reference/storage-api-basic-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Querying data","href":"/platform/forge/runtime-reference/storage-api-query/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Encrypting stored data","href":"/platform/forge/runtime-reference/storage-api-secret/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Custom Entity Store","href":"/platform/forge/storage-reference/storage-api-custom-entities/","expandState":"collapsed","childNavigationNodes":[{"label":"Defining entities","href":"/platform/forge/runtime-reference/custom-entities/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Storing entities","href":"/platform/forge/runtime-reference/storage-api-custom-entities/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Querying data","href":"/platform/forge/runtime-reference/storage-api-query-complex/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"SQL (EAP)","href":"/platform/forge/storage-reference/sql/","expandState":"collapsed","childNavigationNodes":[{"label":"Tutorial","href":"/platform/forge/storage-reference/sql-tutorial/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Execute SQL operations","href":"/platform/forge/storage-reference/sql-api/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Monitoring SQL metrics","href":"/platform/forge/monitor-sql-metrics/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Error handling","href":"/platform/forge/storage-reference/sql-handling-errors/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Cache (EAP)","href":"/platform/forge/storage-reference/storage-cache-api/","expandState":"collapsed","childNavigationNodes":[{"label":"Caching data","href":"/platform/forge/storage-reference/cache/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Error handling","href":"/platform/forge/storage-reference/cache-handling-errors/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"User Interface","href":"/platform/forge/ui-kit/overview/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/ui-kit/overview/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI Kit components","href":"/platform/forge/ui-kit/components/","expandState":"collapsed","childNavigationNodes":[{"label":"Badge","href":"/platform/forge/ui-kit/components/badge/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Box","href":"/platform/forge/ui-kit/components/box/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Button","href":"/platform/forge/ui-kit/components/button/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Button group","href":"/platform/forge/ui-kit/components/button-group/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Calendar (Preview)","href":"/platform/forge/ui-kit/components/calendar/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Bar (EAP)","href":"/platform/forge/ui-kit/components/bar-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Horizontal bar (EAP)","href":"/platform/forge/ui-kit/components/horizontal-bar-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Horizontal stack bar (EAP)","href":"/platform/forge/ui-kit/components/horizontal-stack-bar-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Line (EAP)","href":"/platform/forge/ui-kit/components/line-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Pie (EAP)","href":"/platform/forge/ui-kit/components/pie-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Single value (EAP)","href":"/platform/forge/ui-kit/components/single-value-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Chart - Stack bar (EAP)","href":"/platform/forge/ui-kit/components/stack-bar-chart/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Checkbox","href":"/platform/forge/ui-kit/components/checkbox/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Checkbox group (Preview)","href":"/platform/forge/ui-kit/components/checkbox-group/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Code","href":"/platform/forge/ui-kit/components/code/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Code block","href":"/platform/forge/ui-kit/components/code-block/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Date picker","href":"/platform/forge/ui-kit/components/date-picker/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Dynamic table","href":"/platform/forge/ui-kit/components/dynamic-table/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Empty state (Preview)","href":"/platform/forge/ui-kit/components/empty-state/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Form","href":"/platform/forge/ui-kit/components/form/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Frame (EAP)","href":"/platform/forge/ui-kit/components/frame/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Heading","href":"/platform/forge/ui-kit/components/heading/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Icon","href":"/platform/forge/ui-kit/components/icon/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Image","href":"/platform/forge/ui-kit/components/image/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Inline","href":"/platform/forge/ui-kit/components/inline/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Inline edit (Preview)","href":"/platform/forge/ui-kit/components/inline-edit/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Link","href":"/platform/forge/ui-kit/components/link/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"List (Preview)","href":"/platform/forge/ui-kit/components/list/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Lozenge","href":"/platform/forge/ui-kit/components/lozenge/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Modal","href":"/platform/forge/ui-kit/components/modal/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Popup (Preview)","href":"/platform/forge/ui-kit/components/popup/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Progress bar","href":"/platform/forge/ui-kit/components/progress-bar/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Progress tracker","href":"/platform/forge/ui-kit/components/progress-tracker/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Radio","href":"/platform/forge/ui-kit/components/radio/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Radio group","href":"/platform/forge/ui-kit/components/radio-group/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Range","href":"/platform/forge/ui-kit/components/range/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Section message","href":"/platform/forge/ui-kit/components/section-message/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Select","href":"/platform/forge/ui-kit/components/select/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Spinner","href":"/platform/forge/ui-kit/components/spinner/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Stack","href":"/platform/forge/ui-kit/components/stack/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Tabs","href":"/platform/forge/ui-kit/components/tabs/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Tag","href":"/platform/forge/ui-kit/components/tag/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Tag group","href":"/platform/forge/ui-kit/components/tag-group/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Text","href":"/platform/forge/ui-kit/components/text/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Text area","href":"/platform/forge/ui-kit/components/text-area/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Text field","href":"/platform/forge/ui-kit/components/textfield/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Time picker (Preview)","href":"/platform/forge/ui-kit/components/time-picker/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Toggle","href":"/platform/forge/ui-kit/components/toggle/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Tooltip","href":"/platform/forge/ui-kit/components/tooltip/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"User","href":"/platform/forge/ui-kit/components/user/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"User group","href":"/platform/forge/ui-kit/components/user-group/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"User picker","href":"/platform/forge/ui-kit/components/user-picker/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"XCSS","href":"/platform/forge/ui-kit/components/xcss/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Jira UI Kit components","href":"/platform/forge/ui-kit/jira-components/","expandState":"collapsed","childNavigationNodes":[{"label":"Custom field edit (Preview)","href":"/platform/forge/ui-kit/jira-components/custom-field-edit/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"UI Kit hooks","href":"/platform/forge/ui-kit/hooks/hooks-reference/","expandState":"collapsed","childNavigationNodes":[{"label":"useConfig","href":"/platform/forge/ui-kit/hooks/use-config/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useContentProperty","href":"/platform/forge/ui-kit/hooks/use-content-property/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useForm","href":"/platform/forge/ui-kit/hooks/use-form/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useIssueProperty","href":"/platform/forge/ui-kit/hooks/use-issue-property/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useProductContext","href":"/platform/forge/ui-kit/hooks/use-product-context/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useSpaceProperty","href":"/platform/forge/ui-kit/hooks/use-space-property/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"useTranslation","href":"/platform/forge/ui-kit/hooks/use-translation/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Forge bridge APIs","href":"/platform/forge/apis-reference/ui-api-bridge/bridge/","expandState":"collapsed","childNavigationNodes":[{"label":"events","href":"/platform/forge/apis-reference/ui-api-bridge/events/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"i18n","href":"/platform/forge/apis-reference/ui-api-bridge/i18n/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"invoke","href":"/platform/forge/apis-reference/ui-api-bridge/invoke/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"invokeRemote","href":"/platform/forge/apis-reference/ui-api-bridge/invokeRemote/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Modal","href":"/platform/forge/apis-reference/ui-api-bridge/modal/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"requestBitbucket","href":"/platform/forge/apis-reference/ui-api-bridge/requestBitbucket/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"requestConfluence","href":"/platform/forge/apis-reference/ui-api-bridge/requestConfluence/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"requestJira","href":"/platform/forge/apis-reference/ui-api-bridge/requestJira/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"router","href":"/platform/forge/apis-reference/ui-api-bridge/router/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"showFlag","href":"/platform/forge/apis-reference/ui-api-bridge/showFlag/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"view","href":"/platform/forge/apis-reference/ui-api-bridge/view/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Jira bridge APIs","href":"/platform/forge/apis-reference/jira-api-bridge/bridge/","expandState":"collapsed","childNavigationNodes":[{"label":"ViewIssueModal","href":"/platform/forge/apis-reference/jira-api-bridge/viewIssueModal/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"CreateIssueModal","href":"/platform/forge/apis-reference/jira-api-bridge/createIssueModal/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"uiModifications","href":"/platform/forge/apis-reference/jira-api-bridge/uiModifications/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"workflowRules (EAP)","href":"/platform/forge/apis-reference/jira-api-bridge/workflowRules/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Custom UI","href":"/platform/forge/custom-ui/iframe/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Upgrade UI Kit versions","href":"/platform/forge/ui-kit/upgrade-guides/","expandState":"collapsed","childNavigationNodes":[{"label":"Upgrade from UI Kit 1 to UI Kit latest version","href":"/platform/forge/ui-kit/upgrade-to-ui-kit-latest/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Upgrade to @forge/react major version 10","href":"/platform/forge/ui-kit/version-10-changes/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Previous versions","href":"/platform/forge/ui-kit-components/previous_versions/","expandState":"collapsed","childNavigationNodes":[{"label":"UI Kit - @forge/react@9","href":"/platform/forge/ui-kit-2/all-uikprev-components/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI Kit 1 overview","href":"/platform/forge/ui-kit-components/ui1-about/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI Kit 1 components","href":"/platform/forge/ui-kit-components/uik1_all/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI Kit 1 module components","href":"/platform/forge/ui-kit-components/uik1_modules/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"UI Kit 1 hooks","href":"/platform/forge/ui-kit-components/uik1_hooks/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Events","href":"/platform/forge/events-reference/","expandState":"collapsed","childNavigationNodes":[{"label":"Overview","href":"/platform/forge/events-reference/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Product events","href":"/platform/forge/events-reference/product_events/","expandState":"collapsed","childNavigationNodes":[{"label":"Bitbucket events","href":"/platform/forge/events-reference/bitbucket/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Compass events","href":"/platform/forge/events-reference/compass/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Confluence events","href":"/platform/forge/events-reference/confluence/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira events","href":"/platform/forge/events-reference/jira/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Jira Software events","href":"/platform/forge/events-reference/jira-software/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]},{"label":"Life cycle events","href":"/platform/forge/events-reference/life-cycle/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Data security policy events","href":"/platform/forge/events-reference/data-security-policy-events/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Scheduled trigger events","href":"/platform/forge/events-reference/scheduled-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]},{"label":"Web trigger events","href":"/platform/forge/events-reference/web-trigger/","expandState":"collapsed","childNavigationNodes":[],"nestedNavigationNodes":[]}],"nestedNavigationNodes":[]}],"navigationLocation":{"pathname":"/platform/forge/manifest-reference/"},"theme":"tabbed","newRestApiExperience":true},"frontEndFeatures":{"shouldShowDacIntercept":true,"shouldShowGetHelpWidget":true,"renderRestRedesignedDocs":{"contentSets":[],"enableAllInternal":true,"enableAllExternal":true},"targetExternalBuilders":{"contentSets":[],"userEmails":[]},"shouldEnableAIfeatures":false},"getHelpBaseUrl":"https://dac-get-help.services.atlassian.com","changelogStargateBaseUrl":"/gateway/api/dac-changelogs","bitbucketClientId":"wuJ9hf4zyXjYJVxWFf","isContentSetInternal":false};</script> <title>Manifest – Forge apps</title> <style data-styled-components="bcCCNc jqBRrP ibwhYF eZnlXi bsbZCT cEicjz cWyolX hEREHr ccUuQb KLVHW RfwMt ebpAmp dEUQgS jgvUXc cEunxv jGeTgW hSXbpc fFirge hKiNSh iuGVGX bCtJbM hwrSXl iARtDw BlNLE iLnIWi eOdRVa gDFUKQ kXyXcP XZnqT crPJzz daewSl jcCpdC eXHKe kESMdj cyqYtL giAkeQ cQLHkg gSoAUY bOMGjp iIMkMI dyoGnY fTnCNQ flmLhB bVpayv eQXvCI dNndLg csNJRu gWIkLp fkBZhg hsaQyA bWkibq huMuzN hYifdp crKIBs bIjwqY iLIKSx eysgIS cLWHVF cQNBrn jCVVco fypsmc jgxetf vudGk jMPRQO igxxMf jPqTBr lhcjXP gzVyrk rJVhP hrxrbx gfLKuW kmRqgF APFeF hbQcmX dUcFyG RSHIw insOyI fDSCxc"> /* sc-component-id: sc-keyframes-bcCCNc */ @-webkit-keyframes bcCCNc{0%{opacity:0;}100%{opacity:1;}} @keyframes bcCCNc{0%{opacity:0;}100%{opacity:1;}} /* sc-component-id: sc-keyframes-jqBRrP */ @-webkit-keyframes jqBRrP{0%{opacity:1;}50%{opacity:0.6;}100%{opacity:1;}} @keyframes jqBRrP{0%{opacity:1;}50%{opacity:0.6;}100%{opacity:1;}} /* sc-component-id: sc-keyframes-ibwhYF */ @-webkit-keyframes ibwhYF{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}} @keyframes ibwhYF{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}} /* sc-component-id: sc-hcmgZB */ .kXyXcP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;min-height:0%;} /* sc-component-id: sc-dHmInP */ .cyqYtL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-height:0%;padding-left:8px;padding-right:8px;} /* sc-component-id: sc-ejGVNB */ .XZnqT{position:relative;} /* sc-component-id: sc-eLdqWK */ .jcCpdC{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-weight:500;list-style-type:none;margin:0;padding:0;} /* sc-component-id: sc-iiUIRa */ .crPJzz{background-color:#EBECF0;border-radius:2px;bottom:0;content:'';height:2px;left:8px;margin:0;position:absolute;right:8px;width:inherit;}.daewSl{background-color:#0052CC;border-radius:2px;bottom:0;content:'';height:2px;left:8px;margin:0;position:absolute;right:8px;width:inherit;} /* sc-component-id: sc-hgRTRy */ .eXHKe{color:#42526E;cursor:pointer;line-height:1.8;margin:0;padding:4px 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .eXHKe:hover{color:#0052CC;} .eXHKe:active,.eXHKe:active::before{color:#0747A6;} .eXHKe:focus{border-radius:3px;box-shadow:0 0 0 2px #4C9AFF inset;outline:none;}.kESMdj{color:#0052CC;cursor:pointer;line-height:1.8;margin:0;padding:4px 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .kESMdj:hover{color:#0052CC;} .kESMdj:active,.kESMdj:active::before{color:#0052CC;} .kESMdj:focus{border-radius:3px;box-shadow:0 0 0 2px #0052CC inset;outline:none;} /* sc-component-id: sc-cZBZkQ */ .fypsmc{position:relative;} .fypsmc:not(:hover):not(:focus-within) .copy{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;} /* sc-component-id: sc-gbzWSY */ .jgxetf{position:relative;top:var(--ds-space-0,0px);left:var(--ds-space-0,0px);width:100%;z-index:0;} /* sc-component-id: sc-jqIZGH */ .vudGk{border-radius:3px;background-color:#f4f5f7;color:#172b4d;font-size:12px;line-height:20px;overflow:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;} .vudGk pre{margin:var(--ds-space-0,0px);padding:var(--ds-space-100,8px);} .vudGk pre:first-child{float:left;text-align:right;background-color:#ebecf0;color:#8993a4;font-size:14px;} .vudGk code{display:inline-block;position:relative;left:var(--ds-space-200,16px);padding-right:var(--ds-space-200,16px);} /* sc-component-id: sc-jGxEUC */ .jCVVco{margin:16px var(--ds-space-0,0px);padding:var(--ds-space-0,0px);max-height:500px;overflow:auto;} /* sc-component-id: sc-jdeSqf */ .cQNBrn{overflow-wrap:break-word;word-wrap:break-word;} /* sc-component-id: sc-cBrjTV */ .crKIBs{padding-top:var(--ds-space-300,24px);} .crKIBs:first-child{padding-top:var(--ds-space-0,0px);} .crKIBs h1 .heading-anchor-wrapper{position:absolute;height:1.1666666666666667em;margin-left:var(--ds-space-075,6px);} .crKIBs h1 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h1 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h1:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} .crKIBs h2 .heading-anchor-wrapper{position:absolute;height:1.2em;margin-left:var(--ds-space-075,6px);} .crKIBs h2 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h2 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h2:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} .crKIBs h3 .heading-anchor-wrapper{position:absolute;height:1.25em;margin-left:var(--ds-space-075,6px);} .crKIBs h3 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h3 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h3:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} .crKIBs h4 .heading-anchor-wrapper{position:absolute;height:1.1428571428571428em;margin-left:var(--ds-space-075,6px);} .crKIBs h4 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h4 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h4:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} .crKIBs h5 .heading-anchor-wrapper{position:absolute;height:1.3333333333333333em;margin-left:var(--ds-space-075,6px);} .crKIBs h5 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h5 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h5:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} .crKIBs h6 .heading-anchor-wrapper{position:absolute;height:1.4545454545454546em;margin-left:var(--ds-space-075,6px);} .crKIBs h6 .heading-anchor-wrapper button{padding-left:var(--ds-space-0,0px);padding-right:var(--ds-space-0,0px);} @media (hover:hover) and (pointer:fine){.crKIBs h6 .heading-anchor-wrapper > button{opacity:0;-webkit-transform:translate(-8px,0px);-ms-transform:translate(-8px,0px);transform:translate(-8px,0px);-webkit-transition:opacity 0.2s ease 0s,-webkit-transform 0.2s ease 0s;-webkit-transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;transition:opacity 0.2s ease 0s,transform 0.2s ease 0s;}.crKIBs h6:hover .heading-anchor-wrapper > button{opacity:1;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;}} /* sc-component-id: sc-iCwjlJ */ .bIjwqY{display:inline;outline:none;background-color:transparent;border:none;color:#42526E;cursor:pointer;right:var(--ds-space-0,0px);} /* sc-component-id: sc-fkyLDJ */ .jGeTgW{min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;} /* sc-component-id: sc-jUpvKA */ .kmRqgF{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;} /* sc-component-id: sc-jdfcpN */ .jMPRQO{width:100%;overflow-y:auto;margin:12px var(--ds-space-0,0px) 16px var(--ds-space-0,0px);} /* sc-component-id: sc-kNBZmU */ .lhcjXP{background-color:#F4F5F7;} .lhcjXP.lhcjXP{padding:8px;} /* sc-component-id: sc-eopZyb */ .gzVyrk.gzVyrk{padding:8px;} /* sc-component-id: sc-eNNmBn */ .igxxMf{border-bottom:none;} /* sc-component-id: sc-eEieub */ .jPqTBr{border-bottom:1px solid #C1C7D0;} /* sc-component-id: sc-eNPDpu */ .iARtDw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;bottom:var(--ds-space-400,32px);left:var(--ds-space-400,32px);z-index:1;} /* sc-component-id: sc-hARARD */ .hrxrbx{text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;margin-left:16px;margin-top:var(--ds-space-500,40px);margin-bottom:var(--ds-space-500,40px);} /* sc-component-id: sc-ccLTTT */ .gfLKuW{font-size:14px;color:#6B778C;margin:var(--ds-space-0,0px) var(--ds-space-050,4px) var(--ds-space-0,0px) var(--ds-space-0,0px);} /* sc-component-id: sc-TuwoP */ .hKiNSh{max-height:100px;background-color:#DEEBFF;} /* sc-component-id: sc-fQkuQJ */ .iuGVGX{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#DEEBFF;color:#172B4D;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;fill:#DEEBFF;font-weight:600;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:12px;text-align:center;margin:auto;max-width:876px;} /* sc-component-id: sc-epGmkI */ .bCtJbM{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;} /* sc-component-id: sc-dphlzf */ .fFirge{max-height:0px;overflow:hidden;-webkit-transition:max-height 0.25s ease-in-out;transition:max-height 0.25s ease-in-out;} /* sc-component-id: sc-fCPvlr */ .hwrSXl{-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:4px;overflow:hidden;} /* sc-component-id: sc-gAmQfK */ .hSXbpc{color:black;position:relative;z-index:100;} .hSXbpc div[data-testid='navigation-site-title']{color:#172B4D;font-size:16px;} /* sc-component-id: sc-bYnzgO */ .gDFUKQ{display:none;} @media (min-width:900px){.gDFUKQ{display:block;margin-top:24px;font-size:16px;position:relative;padding-left:.9375rem;padding-right:.9375rem;}} /* sc-component-id: sc-hvvHee */ .APFeF{margin-top:var(--ds-space-400,32px) padding:var(--ds-space-200,16px) var(--ds-space-100,8px);background:#F4F5F7;color:white;min-height:100px;} .APFeF,.APFeF *{box-sizing:border-box;} @media (min-width:768px){.APFeF{padding:var(--ds-space-400,32px) var(--ds-space-100,8px);}} /* sc-component-id: sc-eSePXt */ .hbQcmX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:80rem;margin-left:auto;margin-right:auto;padding-left:0.9375rem;padding-right:0.9375rem;} @media (min-width:860px){.hbQcmX{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}} /* sc-component-id: sc-dXfzlN */ .insOyI{-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;} @media (min-width:860px){.insOyI{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}} @media (max-width:1024px){.insOyI{font-size:14px;}} /* sc-component-id: sc-aewfc */ .fDSCxc{color:#0a0a0a;display:inline-block;line-height:1;padding:var(--ds-space-150,12px) var(--ds-space-400,32px) var(--ds-space-150,12px) var(--ds-space-0,0px);} @media (min-width:768px){.fDSCxc{padding:var(--ds-space-150,12px) var(--ds-space-200,16px);}} @media (max-width:1024px){.fDSCxc{font-size:14px;}} /* sc-component-id: sc-iIHjhz */ .RSHIw{color:#0057d8;display:inline-block;line-height:1;padding:var(--ds-space-150,12px) var(--ds-space-400,32px) var(--ds-space-150,12px) var(--ds-space-0,0px);} @media (min-width:768px){.RSHIw{padding:var(--ds-space-150,12px) var(--ds-space-200,16px);}} .RSHIw.hide-optanon-link{display:none;} /* sc-component-id: sc-RmnOB */ .flmLhB{margin:var(--ds-space-0,0px);font-size:11px;color:#0065FF;list-style-type:disc;} .flmLhB a{color:inherit;font-size:14px;-webkit-text-decoration:none;text-decoration:none;line-height:18px;padding:0.46rem 1rem 0.46rem 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;display:-moz-box;} .flmLhB a > span{display:block;display:-moz-box;white-space:normal;overflow:hidden;text-overflow:ellipsis;} .flmLhB a:focus{outline:none;} .flmLhB a:hover{background-color:inherit;color:#0052CC;}.bVpayv{margin:var(--ds-space-0,0px);font-size:11px;color:#253858;list-style-type:none;} .bVpayv a{color:inherit;font-size:14px;-webkit-text-decoration:none;text-decoration:none;line-height:18px;padding:0.46rem 1rem 0.46rem 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;display:-moz-box;} .bVpayv a > span{display:block;display:-moz-box;white-space:normal;overflow:hidden;text-overflow:ellipsis;} .bVpayv a:focus{outline:none;} .bVpayv a:hover{background-color:inherit;color:#0052CC;} /* sc-component-id: sc-jPPmml */ .eQXvCI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;} .eQXvCI .activeSidenavGroup{color:#0065FF;} .eQXvCI a{line-height:18px;padding:0.3rem 1rem 0.3rem 0;color:#253858;} /* sc-component-id: sc-dNoQZL */ .dNndLg{cursor:pointer;} /* sc-component-id: sc-igwadP */ .dyoGnY{display:none;} @media (min-width:900px){.dyoGnY{display:block;-webkit-flex:auto;-ms-flex:auto;flex:auto;overflow-y:auto;padding-top:var(--ds-space-050,4px);margin-right:var(--ds-space-250,20px);}} /* sc-component-id: sc-ckYZGd */ .fTnCNQ{margin-left:var(--ds-space-0,0px);margin-top:var(--ds-space-0,0px);padding-left:var(--ds-space-300,24px);} /* sc-component-id: sc-cnTzU */ .bOMGjp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;} @media (min-width:900px){.bOMGjp{height:95vh;width:300px;}} /* sc-component-id: sc-dXLFzO */ .iIMkMI{-webkit-flex:initial;-ms-flex:initial;flex:initial;margin:var(--ds-space-0,0px);} @media (min-width:900px){.iIMkMI{padding:var(--ds-space-0,0px) var(--ds-space-250,20px) var(--ds-space-0,0px) var(--ds-space-100,8px);}} /* sc-component-id: sc-giOsra */ .cEicjz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:3px;background-color:#DEEBFF;padding:16px;}.cWyolX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:3px;background-color:#E3FCEF;padding:16px;}.hEREHr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:3px;background-color:#FFFAE6;padding:16px;} /* sc-component-id: sc-SFOxd */ .KLVHW{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;} /* sc-component-id: sc-jOBXIr */ .ebpAmp{margin:0;font-size:1.1428571428571428em;font-style:inherit;line-height:1.25;color:#172B4D;font-weight:600;-webkit-letter-spacing:-0.006em;-moz-letter-spacing:-0.006em;-ms-letter-spacing:-0.006em;letter-spacing:-0.006em;margin-top:24px;} /* sc-component-id: sc-dzOgQY */ * + .RfwMt{margin-top:8px;} /* sc-component-id: sc-jOVcOr */ .ccUuQb{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:40px;} .ccUuQb > span{margin:-2px 0;vertical-align:top;} /* sc-component-id: sc-hkaZBZ */ .bsbZCT{margin:16px var(--ds-space-0,0px);} .bsbZCT > section > div:last-child{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow-x:auto;} /* sc-component-id: sc-gLdKKF */ .dEUQgS{position:relative;padding-top:56.25%;margin:16px var(--ds-space-0,0px);height:0;overflow:hidden;max-width:100%;} /* sc-component-id: sc-gCUMDz */ .jgvUXc{position:absolute;top:var(--ds-space-0,0px);left:var(--ds-space-0,0px);width:100%;height:100%;} /* sc-component-id: sc-grYksN */ .fkBZhg{display:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;margin:var(--ds-space-0,0px) 15px;} @media (min-width:600px){.fkBZhg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:20px;}} @media (min-width:600px){.fkBZhg{margin-top:var(--ds-space-0,0px);}} /* sc-component-id: sc-frudsx */ .hsaQyA{display:none;} @media (min-width:900px){.hsaQyA{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#6B778C;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}} /* sc-component-id: sc-cBXKeB */ .bWkibq{display:none;padding-right:4px;} @media (min-width:1200px){.bWkibq{display:initial;}} /* sc-component-id: sc-hzOKmB */ .gWIkLp{display:block;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;margin-top:var(--ds-space-0,0px)px;} @media (min-width:900px){.gWIkLp{margin-right:192px;}} /* sc-component-id: sc-dzVpKk */ .cQLHkg{padding-bottom:16px;border-right:1px solid rgba(9,30,66,0.08);} @media (min-width:900px){.cQLHkg{padding:var(--ds-space-0,0px);}} /* sc-component-id: sc-cOoQYZ */ .gSoAUY{position:-webkit-sticky;position:sticky;top:16px;} @media (min-width:900px){.gSoAUY{display:block;}} /* sc-component-id: sc-ddcOto */ .eOdRVa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;margin:var(--ds-space-0,0px) auto;} /* sc-component-id: sc-kJdAmE */ .giAkeQ{display:block;padding:16px 16px var(--ds-space-0,0px);} @media (min-width:900px){.giAkeQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:32px 16px var(--ds-space-0,0px);}} /* sc-component-id: sc-hdNmWC */ .huMuzN{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;margin:15px;margin-top:8px;width:80%;} /* sc-component-id: sc-fPEBxH */ .csNJRu{display:block;overflow-y:visible;width:100%;max-width:1200px;margin:var(--ds-space-0,0px) auto;padding:var(--ds-space-100,8px) var(--ds-space-400,32px);} /* sc-component-id: sc-hBcjXN */ .iLnIWi{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;} .iLnIWi h1 + h2{margin-top:12px;} .iLnIWi h1 + h3{margin-top:16px;} /* sc-component-id: sc-gVZiCL */ .BlNLE img{max-width:100%;} .BlNLE tr{border-bottom:1px solid #C1C7D0;} .BlNLE thead{border-bottom:none;} .BlNLE th{background-color:#F4F5F7;padding:8px;} .BlNLE td{padding:8px;} .BlNLE .aui-lozenge{background:#42526E;border:0;border-radius:3px;color:#FFFFFF;box-sizing:border-box;display:inline-block;font-size:11px;font-weight:700;line-height:1;max-width:200px;padding:var(--ds-space-025,2px) var(--ds-space-050,4px) var(--ds-space-025,2px);text-transform:uppercase;vertical-align:baseline;} .BlNLE .aui-lozenge-subtle{background-color:#DFE1E6;color:#42526E;} .BlNLE .aui-lozenge-success{background-color:#00875A;color:#FFFFFF;} .BlNLE .aui-lozenge-error,.BlNLE .aui-lozenge-removed{background-color:#BF2600;color:#FFFFFF;} .BlNLE .aui-lozenge-inprogress{background-color:#0052CC;color:#FFFFFF;} .BlNLE .aui-lozenge-new{background-color:#5243AA;color:#FFFFFF;} .BlNLE .aui-lozenge-moved{background-color:#FF991F;color:#172B4D;} .BlNLE .aui-lozenge-current{background-color:#FFC400;color:#42526E;} .BlNLE .aui-lozenge-complete{background-color:#5E6C84;color:#FFFFFF;} .BlNLE .aui-lozenge-success.aui-lozenge-subtle{background-color:#E3FCEF;color:#006644;} .BlNLE .aui-lozenge-error.aui-lozenge-subtle,.BlNLE .aui-lozenge-removed.aui-lozenge-subtle{background-color:#FFEBE6;color:#BF2600;} .BlNLE .aui-lozenge-current.aui-lozenge-subtle,.BlNLE .aui-lozenge-inprogress.aui-lozenge-subtle{background-color:#DEEBFF;color:#0747A6;} .BlNLE .aui-lozenge-complete.aui-lozenge-subtle,.BlNLE .aui-lozenge-new.aui-lozenge-subtle{background-color:#EAE6FF;color:#403294;} .BlNLE .aui-lozenge-moved.aui-lozenge-subtle{background-color:#FFF0B3;color:#172B4D;} .BlNLE .aui-message{position:relative;margin:16px var(--ds-space-0,0px);border-radius:3px;padding:16px;padding-left:56px;} .BlNLE .aui-message p strong,.BlNLE .aui-message p.title{font-size:1.1428571428571428em;font-style:inherit;line-height:1.25;color:#172B4D;font-weight:600;-webkit-letter-spacing:-0.006em;-moz-letter-spacing:-0.006em;-ms-letter-spacing:-0.006em;letter-spacing:-0.006em;margin-top:24px;font-size:16px;margin-top:var(--ds-space-0,0px);} .BlNLE .aui-message p.title{margin-bottom:8px;} .BlNLE .aui-message p.title + p{margin-top:var(--ds-space-0,0px);} .BlNLE .aui-message.tip{background-color:#E3FCEF;} .BlNLE .aui-message.note,.BlNLE .aui-message.info{background-color:#DEEBFF;} .BlNLE .aui-message.warning{background-color:#FFFAE6;} .BlNLE .aui-message-tip{background-color:#E3FCEF;} .BlNLE .aui-message-note,.BlNLE .aui-message-tip{background-color:#DEEBFF;} .BlNLE .aui-message-warning{background-color:#FFFAE6;} .BlNLE blockquote{padding:8px 16px var(--ds-space-0,0px) 16px;border-left:1px solid #C1C7D0;margin:var(--ds-space-0,0px) var(--ds-space-0,0px) 16px;color:#97A0AF;} .BlNLE blockquote:after,.BlNLE blockquote:before{content:'';} /* sc-component-id: sc-imDdex */ @media (min-width:900px){.hYifdp{position:relative;margin-right:192px;}} /* sc-component-id: sc-lffWgi */ @media (min-width:900px){.iLIKSx{position:absolute;left:100%;height:100%;margin-top:12px;}} /* sc-component-id: sc-fGSyRc */ .eysgIS{border-left:4px solid #0052CC;padding:8px;margin:30px var(--ds-space-0,0px);} .eysgIS:empty{display:none;} .eysgIS > :first-child{margin-bottom:32px;} @media (min-width:900px){.eysgIS{position:-webkit-sticky;position:sticky;top:82px;border-left:none;margin:var(--ds-space-0,0px);padding:var(--ds-space-0,0px);box-sizing:border-box;width:192px;}} /* sc-component-id: sc-dCVVYJ */ .rJVhP{display:'flex';-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;} /* sc-component-id: sc-jkPxnQ */ .cLWHVF{padding-left:28px;} /* sc-component-id: sc-cyQzhP */ .cEunxv{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;} /* sc-component-id: sc-keyframes-eZnlXi */ @-webkit-keyframes eZnlXi{from{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px);}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}} @keyframes eZnlXi{from{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px);}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}} /* sc-component-id: sc-global-2906074290 */ @font-face{font-family:'Charlie Display';font-weight:400;src:url('/font/charlie-display/CharlieDisplay-Regular.otf') format('opentype');} @font-face{font-family:'Charlie Display';font-weight:500;src:url('/font/charlie-display/CharlieDisplay-Semibold.otf') format('opentype');} /* sc-component-id: sc-global-4218966353 */ *{box-sizing:border-box;}</style> <link href="https://dac-static.atlassian.com/_static/documentation-changelogs-docs-index-rest-api-docs-rest-docs-search-graphql-docs-graphql-sandbox-jsapi-connect-module-pages-analytics-and-cookie-preferences-homepage-errors-supportdesk.dfe18eccc22cf5b32118.chunk.css" rel="stylesheet"><link href="https://dac-static.atlassian.com/_static/documentation-changelogs-docs-index-rest-api-docs-rest-docs-search-graphql-docs-graphql-sandbox-jsapi-connect-module-pages-homepage-errors-supportdesk.c67a7555063c3b00faae.chunk.css" rel="stylesheet"><link href="https://dac-static.atlassian.com/_static/documentation.ce5deedee0b24a12eac1.css" rel="stylesheet"> <!-- Algolia Search Insights --> <script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA="> const ALGOLIA_INSIGHTS_SRC = "https://cdn.jsdelivr.net/npm/search-insights@2.2.1"; window.ALGOLIA_DAC_INDEX_NAME = 'developer.atlassian.com-dac-prod'; window.ALGOLIA_DAC_APP_ID = '41O4X7L3MX'; !function(e,a,t,n,s,i,c){e.AlgoliaAnalyticsObject=s,e[s]=e[s]||function(){ (e[s].queue=e[s].queue||[]).push(arguments)},i=a.createElement(t),c=a.getElementsByTagName(t)[0], i.async=1,i.src=n,c.parentNode.insertBefore(i,c) }(window,document,"script",ALGOLIA_INSIGHTS_SRC,"algoliaAnalytics"); algoliaAnalytics('init', { appId: '41O4X7L3MX', apiKey: 'Y2ZkNTM4MDg5M2QyMDUzOTBlMGEwZTU5OGQ0NGQ1MTA0ZmM1MjM5NzUzODdjNDZmYTRjYzkwMGFlYmIwMDE0MnJlc3RyaWN0SW5kaWNlcz1kZXZlbG9wZXIuYXRsYXNzaWFuLmNvbS1kYWMtcHJvZCUyQ2RldmVsb3Blci5hdGxhc3NpYW4uY29tLWRhYy1zdGFnaW5nJTJDZGV2ZWxvcGVyLmF0bGFzc2lhbi5jb20tZGFjLWRldiZmaWx0ZXJzPXByaXZpbGVnZSUzQU5PTkU=', useCookie: true, }); </script> <!-- End Algolia Search Insights --> <script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA="> window.ALGOLIA_DAC_API_KEY = 'Y2ZkNTM4MDg5M2QyMDUzOTBlMGEwZTU5OGQ0NGQ1MTA0ZmM1MjM5NzUzODdjNDZmYTRjYzkwMGFlYmIwMDE0MnJlc3RyaWN0SW5kaWNlcz1kZXZlbG9wZXIuYXRsYXNzaWFuLmNvbS1kYWMtcHJvZCUyQ2RldmVsb3Blci5hdGxhc3NpYW4uY29tLWRhYy1zdGFnaW5nJTJDZGV2ZWxvcGVyLmF0bGFzc2lhbi5jb20tZGFjLWRldiZmaWx0ZXJzPXByaXZpbGVnZSUzQU5PTkU='; window.ALGOLIA_DAC_API_KEY_EXPIRY = Date.now() + 28800000; window.ENABLE_AI = false; </script><script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA="> window.visualEditorEnabled = 'true'; </script><script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA="> window.DAC_CDN_HOST = 'https://dac-static.atlassian.com'; window.ENABLED_VERSION = '1.5800.902'; </script></head> <body> <div id="root"><div class="sc-cyQzhP cEunxv"><div class="sc-fkyLDJ jGeTgW"><div><div class="sc-gAmQfK hSXbpc"><div class="sc-dphlzf fFirge"><div class="sc-TuwoP hKiNSh" aria-hidden="true" data-testid="banner-container" role="alert"><div class="sc-fQkuQJ iuGVGX"><span class="sc-epGmkI bCtJbM"><style data-emotion-css="14fi9av">.css-14fi9av{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-weight:500;max-width:100%;outline:none !important;text-align:center;-webkit-text-decoration:none;text-decoration:none;white-space:nowrap;background:none;border-radius:3px;box-shadow:0 0 0 2px inherit;color:#42526E !important;cursor:default;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 8px;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);-webkit-transition-duration:0.1s,0.15s;transition-duration:0.1s,0.15s;vertical-align:middle;width:auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Oxygen','Ubuntu','Fira Sans','Droid Sans','Helvetica Neue',sans-serif;}.css-14fi9av::-moz-focus-inner{border:0;margin:0;padding:0;}.css-14fi9av:hover{-webkit-text-decoration:inherit;text-decoration:inherit;}</style><button aria-label="close-icon" type="button" class="css-14fi9av"><style data-emotion-css="j8fq0c">.css-j8fq0c{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;position:relative;}</style><span class="css-j8fq0c"><style data-emotion-css="noix33">.css-noix33{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:0;font-size:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0 -2px;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;opacity:1;}</style><span class="css-noix33"><style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="close-icon" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 10.586L6.707 5.293a1 1 0 00-1.414 1.414L10.586 12l-5.293 5.293a1 1 0 001.414 1.414L12 13.414l5.293 5.293a1 1 0 001.414-1.414L13.414 12l5.293-5.293a1 1 0 10-1.414-1.414L12 10.586z" fill="currentColor"/></svg></span></span></span></button></span><span class="sc-fCPvlr hwrSXl"><span></span></span></div></div></div><style data-emotion-css="1cychdt">.css-1cychdt{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;height:56px;padding-right:12px;padding-left:12px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}[data-theme="light"] .css-1cychdt,[data-theme="dark"] .css-1cychdt{border-bottom:1px solid var(--ds-border,#091E4224);}[data-theme="light"] .css-1cychdt::after,[data-theme="dark"] .css-1cychdt::after{content:none;}.css-1cychdt::after{height:4px;position:absolute;top:100%;right:0;left:0;background:linear-gradient(180deg,rgba(9,30,66,0.13) 0,rgba(9,30,66,0.13) 1px,rgba(9,30,66,0.08) 1px,rgba(9,30,66,0) 4px);content:"";}</style><header style="background-color:var(--ds-surface, #FFFFFF);color:var(--ds-text-subtlest, #6B778C)" role="banner" class="css-1cychdt"><style data-emotion-css="vtikxo">.css-vtikxo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;height:inherit;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.css-vtikxo > *{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><nav aria-label="Atlassian Developer Navigation" class="css-vtikxo"><div role="presentation"><style data-emotion="css b7sh1q">.css-b7sh1q,.css-b7sh1q:hover,.css-b7sh1q:active,.css-b7sh1q:focus,.css-b7sh1q:visited,.css-b7sh1q:disabled,.css-b7sh1q[disabled]{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;border-radius:100%;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:inherit;font-style:normal;font-family:inherit;font-weight:500;max-width:100%;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);white-space:nowrap;background:var(--ds-background-brand-bold, #0052CC);color:var(--ds-text-subtle, #344563);cursor:pointer;height:auto;line-height:2.2857142857142856em;padding:4px;vertical-align:middle;width:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;outline:none;margin:0 2px;background-color:transparent;}.css-b7sh1q::-moz-focus-inner,.css-b7sh1q:hover::-moz-focus-inner,.css-b7sh1q:active::-moz-focus-inner,.css-b7sh1q:focus::-moz-focus-inner,.css-b7sh1q:visited::-moz-focus-inner,.css-b7sh1q:disabled::-moz-focus-inner,.css-b7sh1q[disabled]::-moz-focus-inner{border:0;margin:0;padding:0;}.css-b7sh1q:hover,.css-b7sh1q:hover:hover,.css-b7sh1q:active:hover,.css-b7sh1q:focus:hover,.css-b7sh1q:visited:hover,.css-b7sh1q:disabled:hover,.css-b7sh1q[disabled]:hover{color:var(--ds-text-subtle, #0052CC);background-color:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));}.css-b7sh1q:focus,.css-b7sh1q:hover:focus,.css-b7sh1q:active:focus,.css-b7sh1q:focus:focus,.css-b7sh1q:visited:focus,.css-b7sh1q:disabled:focus,.css-b7sh1q[disabled]:focus{color:var(--ds-text-subtle, #344563);background-color:var(--ds-background-selected-hovered, rgba(222, 235, 255, 0.5));box-shadow:0 0 0 2px var(--ds-border-focused, #2684FF);}.css-b7sh1q >span,.css-b7sh1q:hover >span,.css-b7sh1q:active >span,.css-b7sh1q:focus >span,.css-b7sh1q:visited >span,.css-b7sh1q:disabled >span,.css-b7sh1q[disabled] >span{margin:0;}</style><button class="css-b7sh1q" data-testid="app-switcher" type="button" tabindex="0"><style data-emotion="css 16j5qb5">.css-16j5qb5{opacity:1;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 2px;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;font-size:0;line-height:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}</style><span class="css-16j5qb5"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span role="img" aria-label="Documentation" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path fill="currentColor" fill-rule="evenodd" d="M4 5.01C4 4.451 4.443 4 5.01 4h1.98C7.549 4 8 4.443 8 5.01v1.98C8 7.549 7.557 8 6.99 8H5.01C4.451 8 4 7.557 4 6.99V5.01zm0 6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98C8 13.549 7.557 14 6.99 14H5.01C4.451 14 4 13.557 4 12.99v-1.98zm6-6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98C14 7.549 13.557 8 12.99 8h-1.98C10.451 8 10 7.557 10 6.99V5.01zm0 6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98c0 .558-.443 1.01-1.01 1.01h-1.98c-.558 0-1.01-.443-1.01-1.01v-1.98zm6-6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98C20 7.549 19.557 8 18.99 8h-1.98C16.451 8 16 7.557 16 6.99V5.01zm0 6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98c0 .558-.443 1.01-1.01 1.01h-1.98c-.558 0-1.01-.443-1.01-1.01v-1.98zm-12 6c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98C8 19.549 7.557 20 6.99 20H5.01C4.451 20 4 19.557 4 18.99v-1.98zm6 0c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98c0 .558-.443 1.01-1.01 1.01h-1.98c-.558 0-1.01-.443-1.01-1.01v-1.98zm6 0c0-.558.443-1.01 1.01-1.01h1.98c.558 0 1.01.443 1.01 1.01v1.98c0 .558-.443 1.01-1.01 1.01h-1.98c-.558 0-1.01-.443-1.01-1.01v-1.98z"/></svg></span></span></button></div><style data-emotion-css="1qtw0hy">.css-1qtw0hy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:4px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:0;border-radius:3px;color:inherit;cursor:pointer;}.css-1qtw0hy::-moz-focus-inner{border:0;}.css-1qtw0hy:first-of-type{margin-left:0;}.css-1qtw0hy:hover{background-color:var(--product-home-bg-color-hover);box-shadow:var(--product-home-box-shadow-hover);color:var(--product-home-color-hover);}.css-1qtw0hy:active{background-color:var(--product-home-bg-color-active);box-shadow:var(--product-home-box-shadow-active);color:var(--product-home-color-active);}.css-1qtw0hy:focus{background-color:var(--product-home-bg-color-focus);box-shadow:var(--product-home-box-shadow-focus);color:var(--product-home-color-focus);outline:0;}div.css-1qtw0hy{pointer-events:none;}@media (max-width:1279.9px){.css-1qtw0hy{margin:0 8px;}}@media (min-width:1280px){.css-1qtw0hy{margin:0 16px;}}</style><a style="--product-home-color-active:var(--ds-text-subtle, #0052CC);--product-home-bg-color-active:var(--ds-background-neutral-pressed, rgba(222, 235, 255, 0.7));--product-home-box-shadow-active:;--product-home-color-focus:var(--ds-text-subtle, #344563);--product-home-bg-color-focus:;--product-home-box-shadow-focus:0 0 0 2px var(--ds-border-focused, #2684FF);--product-home-color-hover:var(--ds-text-subtle, #0052CC);--product-home-bg-color-hover:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));--product-home-box-shadow-hover:;--logo-max-width:260px" href="/" data-testid="navigation-container" class="css-1qtw0hy"><style data-emotion-css="3fth2k">.css-3fth2k{max-height:28px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:var(--logo-max-width);}.css-3fth2k > *{max-width:var(--logo-max-width);max-height:24px;}.css-3fth2k > span > svg{width:100%;}@media (max-width:1279.9px){.css-3fth2k{display:none;}}</style><div data-testid="navigation-logo" class="css-3fth2k"><svg width="261" height="25" viewBox="0 0 261 25" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="260.25" height="24" transform="translate(0 1)" fill="white" fill-opacity="0.01"></rect><path d="M5.3024 9.13208C5.03183 8.83445 4.62597 8.86149 4.43657 9.21323L0.0533155 18.0068C-0.109027 18.3586 0.134487 18.7644 0.513287 18.7644H6.6282C6.8176 18.7644 7.007 18.6562 7.08818 18.4668C8.44103 15.7611 7.62932 11.6213 5.3024 9.13208Z" fill="url(#paint0_linear)"></path><path d="M8.52267 1.15012C6.06047 5.04635 6.22281 9.34842 7.84624 12.5953C9.46967 15.8421 10.7143 18.3044 10.7955 18.4938C10.8766 18.6832 11.066 18.7914 11.2554 18.7914H17.3704C17.7492 18.7914 18.0197 18.3855 17.8303 18.0338C17.8303 18.0338 9.60495 1.58303 9.3885 1.17718C9.25321 0.771318 8.76618 0.771325 8.52267 1.15012Z" fill="#2684FF"></path><path d="M91.6158 14.4351C91.6158 11.8647 90.2359 10.6471 86.3937 9.80834C84.2562 9.34837 83.7422 8.86134 83.7422 8.18492C83.7422 7.34614 84.4998 6.96734 85.9067 6.96734C87.6113 6.96734 89.2889 7.48142 90.8852 8.21197V4.82982C89.7759 4.26162 88.0442 3.82869 86.015 3.82869C82.1999 3.82869 80.2247 5.47919 80.2247 8.21197C80.2247 10.3765 81.2258 12.1082 85.1762 12.8658C87.5301 13.3528 88.0172 13.7316 88.0172 14.5163C88.0172 15.2739 87.5301 15.7609 85.8526 15.7609C83.9315 15.7609 81.6317 15.1115 80.1436 14.2186V17.7631C81.3341 18.3584 82.9034 19.0078 85.8256 19.0078C89.9924 19.0078 91.6158 17.1679 91.6158 14.4351Z" fill="#0052CC"></path><path d="M133.256 4.04523V18.7643H136.395V7.53561L137.721 10.5119L142.158 18.7643H146.108V4.04523H142.97V13.5423L141.779 10.7825L138.208 4.04523H133.256Z" fill="#0052CC"></path><path d="M113.288 4.04523H109.851V18.7643H113.288V4.04523Z" fill="#0052CC"></path><path d="M105.901 14.4351C105.901 11.8647 104.522 10.6471 100.679 9.80834C98.5419 9.34837 98.0278 8.86134 98.0278 8.18492C98.0278 7.34614 98.7854 6.96734 100.192 6.96734C101.897 6.96734 103.575 7.48142 105.171 8.21197V4.82982C104.062 4.26162 102.33 3.82869 100.301 3.82869C96.4855 3.82869 94.5104 5.47919 94.5104 8.21197C94.5104 10.3765 95.5115 12.1082 99.4618 12.8658C101.816 13.3528 102.303 13.7316 102.303 14.5163C102.303 15.2739 101.816 15.7609 100.138 15.7609C98.2172 15.7609 95.9173 15.1115 94.4292 14.2186V17.7631C95.6197 18.3584 97.189 19.0078 100.111 19.0078C104.278 19.0078 105.901 17.1679 105.901 14.4351Z" fill="#0052CC"></path><path d="M53.5997 4.04523V18.7643H60.6616L61.771 15.5986H57.063V4.04523H53.5997Z" fill="#0052CC"></path><path d="M39.6926 4.0453V7.23806H43.5077V18.7644H46.9439V7.23806H51.0296V4.0453H39.6926Z" fill="#0052CC"></path><path d="M34.6874 4.04523H30.1688L25.028 18.7643H28.9512L29.6818 16.275C30.5476 16.5186 31.4676 16.6809 32.4416 16.6809C33.3886 16.6809 34.3086 16.5456 35.2014 16.275L35.932 18.7643H39.8553L34.6874 4.04523ZM32.4146 13.6505C31.7652 13.6505 31.1158 13.5423 30.5206 13.3799L32.4146 6.94033L34.3086 13.3799C33.7133 13.5423 33.0639 13.6505 32.4146 13.6505Z" fill="#0052CC"></path><path d="M72.8113 4.04521H68.2927L63.1519 18.7643H67.0751L67.8057 16.275C68.6715 16.5185 69.5915 16.6809 70.5655 16.6809C71.5125 16.6809 72.4325 16.5456 73.3253 16.275L74.0559 18.7643H77.9792L72.8113 4.04521ZM70.5655 13.6505C69.9161 13.6505 69.2668 13.5423 68.6715 13.3799L70.5655 6.94031L72.4595 13.3799C71.8372 13.5423 71.2149 13.6505 70.5655 13.6505Z" fill="#0052CC"></path><path d="M125.653 4.04521H121.135L115.994 18.7643H119.917L120.648 16.275C121.514 16.5185 122.433 16.6809 123.408 16.6809C124.355 16.6809 125.274 16.5456 126.167 16.275L126.898 18.7643H130.821L125.653 4.04521ZM123.38 13.6505C122.731 13.6505 122.082 13.5423 121.486 13.3799L123.38 6.94031L125.274 13.3799C124.679 13.5423 124.057 13.6505 123.38 13.6505Z" fill="#0052CC"></path><path d="M155.334 2.93684H161.151C166.292 2.93684 168.754 6.12959 168.754 10.8917C168.754 15.6808 166.238 18.7653 161.151 18.7653H155.334V2.93684ZM157.498 5.02023V16.7089H161.178C164.804 16.7089 166.59 14.8149 166.59 10.9728C166.59 7.13069 164.885 5.02023 161.043 5.02023H157.498Z" fill="#253858"></path><path d="M177.062 19.0079C172.57 19.0079 170.595 16.4104 170.595 12.7307C170.595 9.105 172.624 6.48046 176.277 6.48046C179.984 6.48046 181.472 9.05088 181.472 12.7307V13.6777H172.678C172.976 15.734 174.302 17.0598 177.143 17.0598C178.55 17.0598 179.713 16.7892 180.796 16.4104V18.3044C179.794 18.8185 178.279 19.0079 177.062 19.0079ZM172.651 11.8919H179.361C179.253 9.64615 178.225 8.37446 176.169 8.37446C173.977 8.37446 172.868 9.78143 172.651 11.8919Z" fill="#253858"></path><path d="M187.235 18.7644L182.554 6.72401H184.719L188.615 17.0057L192.484 6.72401H194.648L189.968 18.7644H187.235Z" fill="#253858"></path><path d="M201.737 19.0079C197.245 19.0079 195.27 16.4104 195.27 12.7307C195.27 9.105 197.299 6.48046 200.952 6.48046C204.659 6.48046 206.147 9.05088 206.147 12.7307V13.6777H197.354C197.651 15.734 198.977 17.0598 201.818 17.0598C203.225 17.0598 204.388 16.7892 205.471 16.4104V18.3044C204.497 18.8185 202.981 19.0079 201.737 19.0079ZM197.326 11.8919H204.037C203.928 9.64615 202.9 8.37446 200.844 8.37446C198.652 8.37446 197.543 9.78143 197.326 11.8919Z" fill="#253858"></path><path d="M211.829 18.8456C209.854 18.8456 208.61 17.8986 208.61 15.6799V1.69136H210.693V15.4364C210.693 16.5187 211.424 16.8975 212.316 16.8975C212.533 16.8975 212.668 16.8975 212.912 16.8704V18.7374C212.722 18.7915 212.371 18.8456 211.829 18.8456Z" fill="#253858"></path><path d="M214.049 12.7307C214.049 9.105 216.159 6.48046 219.785 6.48046C223.384 6.48046 225.467 9.105 225.467 12.7307C225.467 16.3563 223.384 19.0079 219.785 19.0079C216.159 19.0079 214.049 16.3293 214.049 12.7307ZM216.078 12.7307C216.078 15.0305 217.215 17.0869 219.785 17.0869C222.328 17.0869 223.438 15.0035 223.438 12.7307C223.438 10.4308 222.328 8.42856 219.785 8.42856C217.215 8.40151 216.078 10.4308 216.078 12.7307Z" fill="#253858"></path><path d="M229.931 16.6539V23.4724H227.848V6.72398H229.931V8.88855C230.689 7.29218 232.15 6.48046 233.99 6.48046C237.183 6.48046 238.806 9.21323 238.806 12.7307C238.806 16.1399 237.129 18.9809 233.746 18.9809C232.015 19.0079 230.662 18.2233 229.931 16.6539ZM233.449 8.40151C231.582 8.40151 229.931 9.59205 229.931 12.2436V13.2177C229.931 15.8964 231.447 17.0598 233.205 17.0598C235.532 17.0598 236.75 15.5175 236.75 12.7307C236.75 9.8626 235.613 8.40151 233.449 8.40151Z" fill="#253858"></path><path d="M247.004 19.0079C242.512 19.0079 240.537 16.4104 240.537 12.7307C240.537 9.105 242.566 6.48046 246.219 6.48046C249.926 6.48046 251.414 9.05088 251.414 12.7307V13.6777H242.62C242.918 15.734 244.244 17.0598 247.085 17.0598C248.492 17.0598 249.655 16.7892 250.737 16.4104V18.3044C249.736 18.8185 248.221 19.0079 247.004 19.0079ZM242.593 11.8919H249.303C249.195 9.64615 248.167 8.37446 246.111 8.37446C243.919 8.37446 242.81 9.78143 242.593 11.8919Z" fill="#253858"></path><path d="M255.878 18.7645H253.848V6.7241H255.878V8.83454C256.581 7.40051 257.772 6.39939 260.153 6.53468V8.56396C257.501 8.29339 255.878 9.10511 255.878 11.6485V18.7645Z" fill="#253858"></path><defs><linearGradient id="paint0_linear" x1="7.72023" y1="10.4927" x2="3.08501" y2="18.5211" gradientUnits="userSpaceOnUse"><stop stop-color="#0052CC"></stop><stop offset="0.9228" stop-color="#2684FF"></stop></linearGradient></defs></svg></div><style data-emotion-css="15lsza2">.css-15lsza2{max-height:28px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.css-15lsza2 > *{max-height:24px;}@media (min-width:1280px){.css-15lsza2{display:none;}}</style><div data-testid="navigation-icon" class="css-15lsza2"><style data-emotion="css 12mte9y">.css-12mte9y{display:inline-block;position:relative;color:var(--logo-color);fill:var(--logo-fill);line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:normal;height:32px;}.css-12mte9y >svg{height:100%;fill:inherit;}</style><span style="--logo-color:#2684FF;--logo-fill:currentColor" aria-label="Atlassian" role="img" class="css-12mte9y"> <svg viewBox="0 0 32 32" height="32" xmlns="http://www.w3.org/2000/svg" focusable="false" aria-hidden="true"> <defs> <linearGradient id="uid225220" x1="14.8402" y1="15.8324" x2="8.6599" y2="26.5369" gradientUnits="userSpaceOnUse"> <stop stop-color="#0052CC" offset="0%"></stop> <stop stop-color="#2684FF" offset="0.9228"></stop> </linearGradient> </defs> <path fill="url(#uid225220)" d="M11.6397 14.0398C11.2789 13.643 10.7378 13.679 10.4852 14.148L4.64091 25.8728C4.42446 26.3418 4.74912 26.8829 5.25419 26.8829H13.4074C13.6599 26.8829 13.9125 26.7386 14.0207 26.4861C15.7885 22.8424 14.7061 17.3227 11.6397 14.0398Z" /> <path fill="#2684FF" d="M15.9343 3.36124C12.6513 8.55622 12.8678 14.2923 15.0324 18.6215C17.1969 22.9506 18.8565 26.2336 18.9647 26.4861C19.0729 26.7386 19.3254 26.8829 19.578 26.8829H27.7312C28.2363 26.8829 28.597 26.3418 28.3445 25.8728C28.3445 25.8728 17.3774 3.93846 17.0887 3.39732C16.8723 2.89225 16.259 2.85618 15.9343 3.36124Z" /> </svg></span></div></a><style data-emotion-css="sufdiy">.css-sufdiy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-right:4px;margin-left:4px;padding-right:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div style="border-right:1px solid var(--ds-border, rgba(107, 119, 140, 0.3))" data-testid="navigation-site-title" class="css-sufdiy">Forge</div><style data-emotion-css="uiquy5">.css-uiquy5{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;position:relative;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.css-uiquy5 > *{margin:0 4px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><div class="css-uiquy5"><style data-emotion-css="le7mka">.css-le7mka{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}</style><div style="--button-selected-color:var(--ds-text-selected, #0052CC);--button-selected-border-color:var(--ds-border-selected, #0052CC)" class="css-le7mka"><style data-emotion="css 4mgr5f">.css-4mgr5f,.css-4mgr5f:hover,.css-4mgr5f:active,.css-4mgr5f:focus,.css-4mgr5f:visited,.css-4mgr5f:disabled,.css-4mgr5f[disabled]{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;border-radius:3px;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-family:inherit;font-weight:500;max-width:100%;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);white-space:nowrap;background:var(--ds-background-brand-bold, #0052CC);color:var(--ds-text-subtle, #344563);cursor:pointer;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 4px;vertical-align:middle;width:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;outline:none;background-color:transparent;margin-left:0;margin-right:0;}.css-4mgr5f::-moz-focus-inner,.css-4mgr5f:hover::-moz-focus-inner,.css-4mgr5f:active::-moz-focus-inner,.css-4mgr5f:focus::-moz-focus-inner,.css-4mgr5f:visited::-moz-focus-inner,.css-4mgr5f:disabled::-moz-focus-inner,.css-4mgr5f[disabled]::-moz-focus-inner{border:0;margin:0;padding:0;}.css-4mgr5f:hover,.css-4mgr5f:hover:hover,.css-4mgr5f:active:hover,.css-4mgr5f:focus:hover,.css-4mgr5f:visited:hover,.css-4mgr5f:disabled:hover,.css-4mgr5f[disabled]:hover{color:var(--ds-text-subtle, #0052CC);background-color:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));}.css-4mgr5f:focus,.css-4mgr5f:hover:focus,.css-4mgr5f:active:focus,.css-4mgr5f:focus:focus,.css-4mgr5f:visited:focus,.css-4mgr5f:disabled:focus,.css-4mgr5f[disabled]:focus{color:var(--ds-text-subtle, #344563);box-shadow:0 0 0 2px var(--ds-border-focused, #2684FF);}</style><a class="css-4mgr5f" href="/platform/forge/" data-testid="Guides" tabindex="0"><style data-emotion="css 178ag6o">.css-178ag6o{opacity:1;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;margin:0 2px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><span class="css-178ag6o">Guides</span></a></div><div style="--button-selected-color:var(--ds-text-selected, #0052CC);--button-selected-border-color:var(--ds-border-selected, #0052CC)" class="css-le7mka"><style data-emotion="css 1nctkyd">.css-1nctkyd,.css-1nctkyd:hover,.css-1nctkyd:active,.css-1nctkyd:focus,.css-1nctkyd:visited,.css-1nctkyd:disabled,.css-1nctkyd[disabled]{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;border-radius:3px;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-family:inherit;font-weight:500;max-width:100%;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);white-space:nowrap;background:var(--ds-background-selected, #253858);color:var(--ds-text-selected, #0052CC);cursor:pointer;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 4px;vertical-align:middle;width:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;outline:none;background-color:var(--ds-background-selected, rgba(222, 235, 255, 0.7));border-color:var(--ds-border-selected, #0052CC);bordor-bottom:4px solid var(--ds-border-selected, #0052CC);margin-left:0;margin-right:0;}.css-1nctkyd::-moz-focus-inner,.css-1nctkyd:hover::-moz-focus-inner,.css-1nctkyd:active::-moz-focus-inner,.css-1nctkyd:focus::-moz-focus-inner,.css-1nctkyd:visited::-moz-focus-inner,.css-1nctkyd:disabled::-moz-focus-inner,.css-1nctkyd[disabled]::-moz-focus-inner{border:0;margin:0;padding:0;}.css-1nctkyd:hover,.css-1nctkyd:hover:hover,.css-1nctkyd:active:hover,.css-1nctkyd:focus:hover,.css-1nctkyd:visited:hover,.css-1nctkyd:disabled:hover,.css-1nctkyd[disabled]:hover{color:var(--ds-text-subtle, #0052CC);background-color:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));}.css-1nctkyd:focus,.css-1nctkyd:hover:focus,.css-1nctkyd:active:focus,.css-1nctkyd:focus:focus,.css-1nctkyd:visited:focus,.css-1nctkyd:disabled:focus,.css-1nctkyd[disabled]:focus{color:var(--ds-text-subtle, #344563);box-shadow:0 0 0 2px var(--ds-border-focused, #2684FF);}</style><a class="css-1nctkyd" href="/platform/forge/manifest-reference/" data-testid="Reference" tabindex="0"><style data-emotion="css 178ag6o">.css-178ag6o{opacity:1;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;margin:0 2px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><span class="css-178ag6o">Reference</span></a></div><div style="--button-selected-color:var(--ds-text-selected, #0052CC);--button-selected-border-color:var(--ds-border-selected, #0052CC)" class="css-le7mka"><style data-emotion="css 4mgr5f">.css-4mgr5f,.css-4mgr5f:hover,.css-4mgr5f:active,.css-4mgr5f:focus,.css-4mgr5f:visited,.css-4mgr5f:disabled,.css-4mgr5f[disabled]{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;border-radius:3px;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-family:inherit;font-weight:500;max-width:100%;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);white-space:nowrap;background:var(--ds-background-brand-bold, #0052CC);color:var(--ds-text-subtle, #344563);cursor:pointer;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 4px;vertical-align:middle;width:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;outline:none;background-color:transparent;margin-left:0;margin-right:0;}.css-4mgr5f::-moz-focus-inner,.css-4mgr5f:hover::-moz-focus-inner,.css-4mgr5f:active::-moz-focus-inner,.css-4mgr5f:focus::-moz-focus-inner,.css-4mgr5f:visited::-moz-focus-inner,.css-4mgr5f:disabled::-moz-focus-inner,.css-4mgr5f[disabled]::-moz-focus-inner{border:0;margin:0;padding:0;}.css-4mgr5f:hover,.css-4mgr5f:hover:hover,.css-4mgr5f:active:hover,.css-4mgr5f:focus:hover,.css-4mgr5f:visited:hover,.css-4mgr5f:disabled:hover,.css-4mgr5f[disabled]:hover{color:var(--ds-text-subtle, #0052CC);background-color:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));}.css-4mgr5f:focus,.css-4mgr5f:hover:focus,.css-4mgr5f:active:focus,.css-4mgr5f:focus:focus,.css-4mgr5f:visited:focus,.css-4mgr5f:disabled:focus,.css-4mgr5f[disabled]:focus{color:var(--ds-text-subtle, #344563);box-shadow:0 0 0 2px var(--ds-border-focused, #2684FF);}</style><a class="css-4mgr5f" href="/platform/forge/get-help/" data-testid="Get help" tabindex="0"><style data-emotion="css 178ag6o">.css-178ag6o{opacity:1;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;margin:0 2px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><span class="css-178ag6o">Get help</span></a></div><div style="--button-selected-color:var(--ds-text-selected, #0052CC);--button-selected-border-color:var(--ds-border-selected, #0052CC)" class="css-le7mka"><style data-emotion="css 4mgr5f">.css-4mgr5f,.css-4mgr5f:hover,.css-4mgr5f:active,.css-4mgr5f:focus,.css-4mgr5f:visited,.css-4mgr5f:disabled,.css-4mgr5f[disabled]{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;border-radius:3px;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-family:inherit;font-weight:500;max-width:100%;position:relative;text-align:center;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47, 0.03, 0.49, 1.38);white-space:nowrap;background:var(--ds-background-brand-bold, #0052CC);color:var(--ds-text-subtle, #344563);cursor:pointer;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 4px;vertical-align:middle;width:auto;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;outline:none;background-color:transparent;margin-left:0;margin-right:0;}.css-4mgr5f::-moz-focus-inner,.css-4mgr5f:hover::-moz-focus-inner,.css-4mgr5f:active::-moz-focus-inner,.css-4mgr5f:focus::-moz-focus-inner,.css-4mgr5f:visited::-moz-focus-inner,.css-4mgr5f:disabled::-moz-focus-inner,.css-4mgr5f[disabled]::-moz-focus-inner{border:0;margin:0;padding:0;}.css-4mgr5f:hover,.css-4mgr5f:hover:hover,.css-4mgr5f:active:hover,.css-4mgr5f:focus:hover,.css-4mgr5f:visited:hover,.css-4mgr5f:disabled:hover,.css-4mgr5f[disabled]:hover{color:var(--ds-text-subtle, #0052CC);background-color:var(--ds-background-neutral-hovered, rgba(222, 235, 255, 0.9));}.css-4mgr5f:focus,.css-4mgr5f:hover:focus,.css-4mgr5f:active:focus,.css-4mgr5f:focus:focus,.css-4mgr5f:visited:focus,.css-4mgr5f:disabled:focus,.css-4mgr5f[disabled]:focus{color:var(--ds-text-subtle, #344563);box-shadow:0 0 0 2px var(--ds-border-focused, #2684FF);}</style><a class="css-4mgr5f" href="/platform/forge/changelog/" data-testid="Changelog" tabindex="0"><style data-emotion="css 178ag6o">.css-178ag6o{opacity:1;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;margin:0 2px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><span class="css-178ag6o">Changelog</span></a></div><style data-emotion-css="1ozpmrm">.css-1ozpmrm{width:100%;min-width:1px;margin:0px;position:relative;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;}</style><div class="css-1ozpmrm"><div style="display:block;width:100%;position:absolute"></div></div></div></nav><style data-emotion-css="d4blq8">.css-d4blq8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.css-d4blq8 > *{margin-right:4px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><div class="css-d4blq8"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="16" height="16" viewBox="0 0 24 24" role="presentation"><path d="M16.436 15.085l3.94 4.01a1 1 0 01-1.425 1.402l-3.938-4.006a7.5 7.5 0 111.423-1.406zM10.5 16a5.5 5.5 0 100-11 5.5 5.5 0 000 11z" fill="currentColor" fill-rule="evenodd"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button><div class="sc-eNPDpu iARtDw"></div><style data-emotion-css="1pys61m">a.css-1pys61m{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-weight:500;max-width:100%;outline:none !important;text-align:center;-webkit-text-decoration:none;text-decoration:none;white-space:nowrap;background:none;border-radius:3px;box-shadow:0 0 0 2px inherit;color:#42526E !important;cursor:default;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 8px;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);-webkit-transition-duration:0.1s,0.15s;transition-duration:0.1s,0.15s;vertical-align:middle;width:auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Oxygen','Ubuntu','Fira Sans','Droid Sans','Helvetica Neue',sans-serif;}a.css-1pys61m::-moz-focus-inner{border:0;margin:0;padding:0;}a.css-1pys61m:hover{-webkit-text-decoration:inherit;text-decoration:inherit;}</style><a href="/support" type="button" class="css-1pys61m"><style data-emotion-css="j8fq0c">.css-j8fq0c{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;position:relative;}</style><span class="css-j8fq0c"><style data-emotion-css="t5emrf">.css-t5emrf{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;opacity:1;}</style><span class="css-t5emrf">Support</span></span></a><style data-emotion-css="9b4v41">a.css-9b4v41{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-width:0;box-sizing:border-box;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:inherit;font-style:normal;font-weight:500;max-width:100%;outline:none !important;text-align:center;-webkit-text-decoration:none;text-decoration:none;white-space:nowrap;background:rgba(9,30,66,0.04);border-radius:3px;box-shadow:0 0 0 2px inherit;color:#42526E !important;cursor:default;height:2.2857142857142856em;line-height:2.2857142857142856em;padding:0 8px;-webkit-transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);transition:background 0.1s ease-out,box-shadow 0.15s cubic-bezier(0.47,0.03,0.49,1.38);-webkit-transition-duration:0.1s,0.15s;transition-duration:0.1s,0.15s;vertical-align:middle;width:auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Oxygen','Ubuntu','Fira Sans','Droid Sans','Helvetica Neue',sans-serif;}a.css-9b4v41::-moz-focus-inner{border:0;margin:0;padding:0;}a.css-9b4v41:hover{-webkit-text-decoration:inherit;text-decoration:inherit;}</style><a href="/account/login?returnTo=%2Fplatform%2Fforge%2F" type="button" class="css-9b4v41"><span class="css-j8fq0c"><span class="css-t5emrf">Log in</span></span></a></div></header></div></div><div class="sc-gVZiCL BlNLE sc-hBcjXN iLnIWi"><div class="sc-ddcOto eOdRVa"><div class="sc-bYnzgO gDFUKQ"><div class="sc-hcmgZB kXyXcP"><div class="sc-ejGVNB XZnqT"><span class="sc-iiUIRa crPJzz"></span><div class="sc-eLdqWK jcCpdC" role="tablist"><a aria-posinset="1" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/cli-reference/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="1" aria-selected="false" aria-setsize="7" role="tab">CLI</div></a><a aria-posinset="2" aria-selected="true" aria-setsize="7" role="tab" href="/platform/forge/manifest-reference/" style="text-decoration:none"><div class="sc-hgRTRy kESMdj" aria-posinset="2" aria-selected="true" aria-setsize="7" role="tab">Manifest<span class="sc-iiUIRa daewSl"></span></div></a><a aria-posinset="3" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/manifest-reference/modules/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="3" aria-selected="false" aria-setsize="7" role="tab">Modules</div></a><a aria-posinset="4" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/function-reference/index/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="4" aria-selected="false" aria-setsize="7" role="tab">Functions</div></a><a aria-posinset="5" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/runtime-reference/storage-api/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="5" aria-selected="false" aria-setsize="7" role="tab">Storage</div></a><a aria-posinset="6" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/ui-kit/overview/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="6" aria-selected="false" aria-setsize="7" role="tab">User Interface</div></a><a aria-posinset="7" aria-selected="false" aria-setsize="7" role="tab" href="/platform/forge/events-reference/" style="text-decoration:none"><div class="sc-hgRTRy eXHKe" aria-posinset="7" aria-selected="false" aria-setsize="7" role="tab">Events</div></a></div></div><div class="sc-dHmInP cyqYtL" role="tabpanel"></div></div></div><div class="sc-kJdAmE giAkeQ"><div class="sc-dzVpKk cQLHkg"><div class="sc-cOoQYZ gSoAUY"><div class="sc-cnTzU bOMGjp"><div class="sc-dXLFzO iIMkMI"><style data-emotion-css="1f9r6s4">.css-1f9r6s4{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#FAFBFC;border-color:#DFE1E6;color:#091E42;cursor:text;border-radius:3px;border-width:2px;border-style:solid;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;font-size:14px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;max-width:100%;overflow:hidden;-webkit-transition:background-color 0.2s ease-in-out,border-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out,border-color 0.2s ease-in-out;word-wrap:break-word;vertical-align:top;pointer-events:auto;}.css-1f9r6s4:hover{background-color:#EBECF0;}.css-1f9r6s4:focus-within{background-color:#FFFFFF;border-color:#4C9AFF;}.css-1f9r6s4[data-disabled]{background-color:#FAFBFC;border-color:#FAFBFC;color:#A5ADBA;cursor:not-allowed;}.css-1f9r6s4[data-disabled]:focus-within{background-color:#F4F5F7;border-color:#4C9AFF;}.css-1f9r6s4[data-disabled]:hover{background-color:#F4F5F7;}.css-1f9r6s4[data-invalid]{background-color:#FAFBFC;border-color:#DE350B;}.css-1f9r6s4[data-invalid]:focus-within{background-color:#FFFFFF;border-color:#4C9AFF;}.css-1f9r6s4[data-invalid]:hover{background-color:#EBECF0;}@media screen and (-ms-high-contrast:active){.css-1f9r6s4[data-invalid]:focus-within{border-color:Highlight;}.css-1f9r6s4:focus-within{border-color:Highlight;}.css-1f9r6s4[data-disabled]{border-color:GrayText;}}</style><div data-disabled="true" data-ds--text-field--container="true" class="css-1f9r6s4"><style data-emotion-css="1yzx7dv">.css-1yzx7dv{background-color:transparent;border:0;box-sizing:border-box;color:inherit;cursor:inherit;font-size:14px;min-width:0;outline:none;width:100%;line-height:1.4285714285714286;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Oxygen','Ubuntu','Fira Sans','Droid Sans','Helvetica Neue',sans-serif;}.css-1yzx7dv[data-monospaced]{font-family:'SFMono-Medium','SF Mono','Segoe UI Mono','Roboto Mono','Ubuntu Mono',Menlo,Consolas,Courier,monospace;}.css-1yzx7dv[data-compact]{padding:4px 6px;height:2.00em;}.css-1yzx7dv:not([data-compact]){padding:8px 6px;height:2.57em;}.css-1yzx7dv[disabled]{-webkit-text-fill-color:#A5ADBA;}.css-1yzx7dv::-ms-clear{display:none;}.css-1yzx7dv:invalid{box-shadow:none;}.css-1yzx7dv::placeholder{color:#7A869A;}.css-1yzx7dv::-webkit-input-placeholder:disabled{color:#A5ADBA;}.css-1yzx7dv::-moz-placeholder:disabled{color:#A5ADBA;}.css-1yzx7dv:-ms-input-placeholder:disabled{color:#A5ADBA;}.css-1yzx7dv::placeholder:disabled{color:#A5ADBA;}@media screen and (-ms-high-contrast:active){.css-1yzx7dv[disabled]{color:GrayText;}}</style><input value="Loading..." disabled="" data-ds--text-field--input="true" class="css-1yzx7dv"/></div></div><div class="sideNavLinksScrollable sc-igwadP dyoGnY"><ul class="sc-ckYZGd fTnCNQ"><li class="sc-RmnOB flmLhB"><a href="/platform/forge/manifest-reference/"><span>Overview</span></a></li></ul><div class="sc-jPPmml eQXvCI"><span class="sc-dNoQZL dNndLg"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span role="img" aria-label="Closed" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M10.294 9.698a.988.988 0 010-1.407 1.01 1.01 0 011.419 0l2.965 2.94a1.09 1.09 0 010 1.548l-2.955 2.93a1.01 1.01 0 01-1.42 0 .988.988 0 010-1.407l2.318-2.297-2.327-2.307z" fill="currentColor" fill-rule="evenodd"/></svg></span></span><a href="/platform/forge/manifest-reference/display-conditions/" class="">Display conditions</a></div><ul class="sc-ckYZGd fTnCNQ"><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/endpoint/"><span>Endpoint</span></a></li><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/keyboard-shortcuts/"><span>Keyboard shortcuts</span></a></li></ul><div class="sc-jPPmml eQXvCI"><span class="sc-dNoQZL dNndLg"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span role="img" aria-label="Closed" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M10.294 9.698a.988.988 0 010-1.407 1.01 1.01 0 011.419 0l2.965 2.94a1.09 1.09 0 010 1.548l-2.955 2.93a1.01 1.01 0 01-1.42 0 .988.988 0 010-1.407l2.318-2.297-2.327-2.307z" fill="currentColor" fill-rule="evenodd"/></svg></span></span><a href="/platform/forge/manifest-reference/permissions/" class="">Permissions</a></div><ul class="sc-ckYZGd fTnCNQ"><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/providers/"><span>Providers</span></a></li><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/remotes/"><span>Remotes</span></a></li><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/resources/"><span>Resources</span></a></li><li class="sc-RmnOB bVpayv"><a href="/platform/forge/manifest-reference/variables/"><span>Variables</span></a></li></ul><div class="sc-jPPmml eQXvCI"><span class="sc-dNoQZL dNndLg"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span role="img" aria-label="Closed" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M10.294 9.698a.988.988 0 010-1.407 1.01 1.01 0 011.419 0l2.965 2.94a1.09 1.09 0 010 1.548l-2.955 2.93a1.01 1.01 0 01-1.42 0 .988.988 0 010-1.407l2.318-2.297-2.327-2.307z" fill="currentColor" fill-rule="evenodd"/></svg></span></span><a href="/platform/forge/manifest-reference/translations/" class="">Translations</a></div></div></div></div></div><div class="sc-fPEBxH csNJRu"><div class="sc-hzOKmB gWIkLp"><div class="sc-grYksN fkBZhg"><span class="sc-frudsx hsaQyA"><span class="sc-cBXKeB bWkibq"></span></span></div></div><div class="sc-hdNmWC huMuzN"><div class="sc-imDdex hYifdp"><div class="sc-cBrjTV crKIBs"><h1 id="overview">Overview<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h1><div class="sc-lffWgi iLIKSx"><div class="sc-fGSyRc eysgIS" width="192"><div class="sc-jkPxnQ cLWHVF"></div></div></div><p>The <a href="/platform/forge/manifest" target="_self">manifest</a> contains three required top-level properties: <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>app</code></span></span>, <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>modules</code></span></span>, and <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>permissions</code></span></span>, and number of optional properties. For example:</p> <pre><div class="sc-jGxEUC jCVVco"><div class="sc-cZBZkQ fypsmc"><div class="sc-gbzWSY jgxetf"><div class="sc-jqIZGH vudGk"><pre>1 2</pre><pre><code class="yaml">app: id: "ari:cloud:ecosystem::app/406d303d-0393-4ec4-ad7c-1435be94583a" licensing: enabled: true </code></pre></div></div></div></div></pre> <a id="variables" href="" target="_blank"></a><div class="sc-jdfcpN jMPRQO"><table node="[object Object]"><thead class="sc-eNNmBn igxxMf"><tr class="sc-eEieub jPqTBr"><th class="sc-kNBZmU lhcjXP">Property</th><th class="sc-kNBZmU lhcjXP">Required</th><th class="sc-kNBZmU lhcjXP">Description</th></tr></thead><tbody><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>app</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"><p>Identifying information, licensing details, and app storage (EAP).</p> <p>See <a href="/platform/forge/manifest-reference/#app" target="_self">App</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>modules</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"> <p>A list of the modules used by the app.</p> <p>See <a href="/platform/forge/manifest-reference/modules/" target="_self">Modules</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>permissions</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"> <p>A list of the permissions required by the app.</p> <p>See <a href="/platform/forge/manifest-reference/permissions/" target="_self">Permissions</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>connectModules</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of the Connect modules used by the app.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>endpoint</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of remote endpoints referenced by remote resolver invocations.</p> <p>See <a href="/platform/forge/manifest-reference/endpoint/" target="_self">Endpoint</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>providers</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>Authentication providers used by the app.</p> <p>See <a href="/platform/forge/manifest-reference/providers/" target="_self">Providers</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>remotes</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of remote services required by the app (along with additional options for declaring egress details for <a href="/platform/forge/data-residency/" target="_self">data residency</a>).</p> <p>See <a href="/platform/forge/manifest-reference/remotes/" target="_self">Remotes</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>resources</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of the resources used by the app.</p> <p>See <a href="/platform/forge/manifest-reference/resources/" target="_self">Resources</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>environment</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of <i>environment variables</i> to be parsed by the Forge CLI for entire or partial field values.</p> <p>After specifying a variable in <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>environment</code></span></span>, you can declare it in any field by enclosing it in <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>${</code></span></span> and <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>}</code></span></span>.</p> <p>See <a href="/platform/forge/manifest-reference/environment/" target="_self">Environment</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>translations</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>A list of translation resources supported by the app, including the fallback configurations for when a desired translation is not available.</p> <p>The <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>translations</code></span></span> property is available to participants of the <a href="/platform/forge/internationalization/" target="_self">Internationalization for Forge EAP</a>. See <a href="/platform/forge/manifest-reference/translations/" target="_self">Translations</a> to learn more.</p> </td></tr></tbody></table></div> <h2 id="app">App<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h2> <p>The <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>app</code></span></span> dictionary contains properties about your Forge app. Some of these are populated as part of the <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>forge create</code></span></span> command (for example, <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>id</code></span></span>).</p> <div class="sc-jdfcpN jMPRQO"><table node="[object Object]"><thead class="sc-eNNmBn igxxMf"><tr class="sc-eEieub jPqTBr"><th class="sc-kNBZmU lhcjXP">Property</th><th class="sc-kNBZmU lhcjXP">Required</th><th class="sc-kNBZmU lhcjXP">Description</th></tr></thead><tbody><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>id</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk">A unique Atlassian resource identifier (<span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>ari</code></span></span>) assigned to your app.</td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>connect</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>Details specific to <a href="/platform/adopting-forge-from-connect/" target="_self">Adopting Forge from Connect</a>.</p> <p>This is required if the manifest has <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>connectModules</code></span></span>.</p> <p>See <a href="/platform/forge/manifest-reference/#connect" target="_self">Connect</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>licensing</code></span></span></td><td class="sc-eopZyb gzVyrk">No</td><td class="sc-eopZyb gzVyrk"><p>The app's licensing state. To enable licensing for your app, add the <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>enabled</code></span></span> field attribute and set its value to <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>true</code></span></span>. </p> <p>See <a href="/platform/marketplace/listing-forge-apps/#enabling-licensing-for-your-app" target="_self">licensing</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>package</code></span></span></td><td class="sc-eopZyb gzVyrk">No</td><td class="sc-eopZyb gzVyrk"> <p>Settings relating to packaging the Forge application.</p> <p>See <a href="#package" target="_self">Packaging</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>runtime</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"> <p>Settings relating to the Forge runtime.</p> <p>See <a href="#runtimev2" target="_self">Runtime</a> to learn more.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>storage</code></span></span> </td><td class="sc-eopZyb gzVyrk">No</td><td class="sc-eopZyb gzVyrk"> <p>A list of <i>custom entities</i> and their respective <i>indexes</i>. Custom entities are user-defined data structures for storing app data. Forge's storage API lets you query data stored in these structures using a wide array of query conditions. These query conditions make it possible to build advanced, complex queries to suit your app's operations. </p> <p>See <a href="/platform/forge/runtime-reference/custom-entities" target="_self">Custom entities</a> to learn more.</p> </td></tr></tbody></table></div> <p><a id="runtimev2" href="" target="_blank"></a></p> <h3 id="runtime">Runtime<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h3> <!-- --> <p>The <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>runtime</code></span></span> property lets you configure the Forge runtime using the following settings:</p> <div class="sc-jdfcpN jMPRQO"><table node="[object Object]"><thead class="sc-eNNmBn igxxMf"><tr class="sc-eEieub jPqTBr"><th class="sc-kNBZmU lhcjXP">Setting</th><th class="sc-kNBZmU lhcjXP">Required</th><th class="sc-kNBZmU lhcjXP">Type</th><th class="sc-kNBZmU lhcjXP">Description</th></tr></thead><tbody><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>snapshots</code></span></span></td><td class="sc-eopZyb gzVyrk">No</td><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>boolean</code></span></span></td><td class="sc-eopZyb gzVyrk">Whether a <a href="/platform/forge/runtime-reference/legacy-runtime-reference/#snapshots" target="_self">snapshot</a> of the app is taken at deployment time. Default value is <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>true</code></span></span>. This setting is only used in the <a href="/platform/forge/runtime-reference/legacy-runtime-reference/" target="_self">legacy runtime</a>.</td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>name</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>string</code></span></span></td><td class="sc-eopZyb gzVyrk"><p>Lets you specify the Forge runtime environment version on which to deploy your app. This field supports the following values:</p> <li><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>nodejs18.x</code></span></span> (recommended): specifies the Node.js 18 runtime version. This version runs on a standard <a href="https://nodejs.org/en/blog/release/v18.12.0" target="_blank">Node.js 18<style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="Follow" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M11.031 7A1.03 1.03 0 0010 8.036a1.05 1.05 0 001.044 1.045l3.121.014.014 3.121a1.05 1.05 0 001.045 1.044 1.03 1.03 0 001.036-1.035l-.019-4.161a1.053 1.053 0 00-1.045-1.045L11.035 7h-.004z"/><path d="M13.364 8.292l-7.072 7.071a1.002 1.002 0 000 1.415c.39.39 1.024.39 1.415 0l7.071-7.071A1.002 1.002 0 0014.071 8a1 1 0 00-.707.292z"/></g></svg></span></a> environment. See <a href="/platform/forge/runtime-reference/" target="_self">Runtime</a> for more information about the this runtime version.<p></p> </li> <li><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>nodejs20.x</code></span></span>: specifies the Node.js 20 runtime version. This version runs on a standard <a href="https://nodejs.org/en/blog/release/v20.16.0" target="_blank">Node.js 20<style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="Follow" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M11.031 7A1.03 1.03 0 0010 8.036a1.05 1.05 0 001.044 1.045l3.121.014.014 3.121a1.05 1.05 0 001.045 1.044 1.03 1.03 0 001.036-1.035l-.019-4.161a1.053 1.053 0 00-1.045-1.045L11.035 7h-.004z"/><path d="M13.364 8.292l-7.072 7.071a1.002 1.002 0 000 1.415c.39.39 1.024.39 1.415 0l7.071-7.071A1.002 1.002 0 0014.071 8a1 1 0 00-.707.292z"/></g></svg></span></a> environment. See <a href="/platform/forge/runtime-reference/" target="_self">Runtime</a> for more information about the this runtime version.<p></p> </li> <li><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>sandbox</code></span></span>: specifies the legacy version of the Forge runtime. See <a href="/platform/forge/runtime-reference/legacy-runtime-reference/" target="_self">Legacy runtime (deprecated)</a> for more information about this runtime version.</li> </td></tr></tbody></table></div> <div class="sc-hkaZBZ bsbZCT"><section class="sc-giOsra hEREHr"><div class="sc-jOVcOr ccUuQb"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span aria-hidden="true" style="--icon-primary-color:#FF8B00;--icon-secondary-color:#FFFAE6" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill-rule="evenodd"><path d="M12.938 4.967c-.518-.978-1.36-.974-1.876 0L3.938 18.425c-.518.978-.045 1.771 1.057 1.771h14.01c1.102 0 1.573-.797 1.057-1.771L12.938 4.967z" fill="currentColor"></path><path d="M12 15a1 1 0 01-1-1V9a1 1 0 012 0v5a1 1 0 01-1 1m0 3a1 1 0 010-2 1 1 0 010 2" fill="inherit"></path></g></svg></span></div><div class="sc-SFOxd KLVHW"><div class="sc-dzOgQY RfwMt"> <p>The legacy Javascript sandbox runtime is now <a href="https://developer.atlassian.com/platform/forge/changelog/#CHANGE-789" target="_self">deprecated</a>. This means that Forge can only create new apps on the <a href="/platform/forge/runtime-reference/" target="_self">latest runtime version</a>. In addition:</p> <ul> <li>From October 29, 2024: Forge apps that haven't been updated since January 1, 2023 will no longer function.</li> <li>From February 28, 2025: <em>All</em> Forge apps still running on the legacy runtime version will no longer function.</li> </ul> <p>If your app is running on the Javascript sandbox runtime, we strongly advise that you <a href="/platform/forge/runtime-reference/legacy-runtime-migrating/" target="_self">upgrade to the latest runtime</a>.</p> </div></div></section></div> <!-- --> <p><a id="package" href="" target="_blank"></a></p> <h3 id="packaging--preview-">Packaging (preview)<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h3> <div class="sc-hkaZBZ bsbZCT"><section class="sc-giOsra cWyolX"><div class="sc-jOVcOr ccUuQb"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span aria-hidden="true" style="--icon-primary-color:#006644;--icon-secondary-color:#E3FCEF" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M11.998 4A5.997 5.997 0 006 9.998c0 2.218 2.288 4.484 2.288 4.484.39.387.71 1.112.71 1.611 0 .499.45.907 1 .907h4c.55 0 1-.408 1-.907 0-.499.32-1.224.71-1.611 0 0 2.288-2.266 2.288-4.484A5.997 5.997 0 0011.998 4zm2.965 15c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v.003c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V19z" fill="currentColor" fill-rule="evenodd"></path></svg></span></div><div class="sc-SFOxd KLVHW"><div class="sc-dzOgQY RfwMt"> <p>This section describes a Forge <em>preview</em> feature. Preview features are deemed stable; however, they remain under active development and may be subject to shorter deprecation windows. Preview features are suitable for early adopters in production environments.</p> <p>We release preview features so partners and developers can study, test, and integrate them prior to General Availability (GA). For more information, see <a href="/platform/forge/whats-coming/#preview" target="_self">Forge release phases: EAP, Preview, and GA</a>.</p> </div></div></section></div> <p>The <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>package</code></span></span> property lets you configure how the application's source code is packaged during deployment.</p> <div class="sc-jdfcpN jMPRQO"><table node="[object Object]"><thead class="sc-eNNmBn igxxMf"><tr class="sc-eEieub jPqTBr"><th class="sc-kNBZmU lhcjXP">Setting</th><th class="sc-kNBZmU lhcjXP">Type</th><th class="sc-kNBZmU lhcjXP">Description</th></tr></thead><tbody><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>extraFiles</code></span></span></td><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>string[]</code></span></span></td><td class="sc-eopZyb gzVyrk"> <p> Extra files to copy to the deployed application. These can include application data, configuration files or additional programs the application might want to read or launch. </p> <p> Each item in this list can point to a single file or a <a href="https://www.npmjs.com/package/glob" target="_blank">glob pattern<style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="Follow" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M11.031 7A1.03 1.03 0 0010 8.036a1.05 1.05 0 001.044 1.045l3.121.014.014 3.121a1.05 1.05 0 001.045 1.044 1.03 1.03 0 001.036-1.035l-.019-4.161a1.053 1.053 0 00-1.045-1.045L11.035 7h-.004z"/><path d="M13.364 8.292l-7.072 7.071a1.002 1.002 0 000 1.415c.39.39 1.024.39 1.415 0l7.071-7.071A1.002 1.002 0 0014.071 8a1 1 0 00-.707.292z"/></g></svg></span></a>. </p> <p> When the Forge function runs, the files matching the specified patterns are available in the application directory. </p> </td></tr></tbody></table></div> <h4 id="reading-packaged-files">Reading packaged files<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h4> <p>You can read packaged files using the <a href="https://nodejs.org/api/fs.html" target="_blank">fs module<style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="Follow" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M11.031 7A1.03 1.03 0 0010 8.036a1.05 1.05 0 001.044 1.045l3.121.014.014 3.121a1.05 1.05 0 001.045 1.044 1.03 1.03 0 001.036-1.035l-.019-4.161a1.053 1.053 0 00-1.045-1.045L11.035 7h-.004z"/><path d="M13.364 8.292l-7.072 7.071a1.002 1.002 0 000 1.415c.39.39 1.024.39 1.415 0l7.071-7.071A1.002 1.002 0 0014.071 8a1 1 0 00-.707.292z"/></g></svg></span></a>.</p> <pre><div class="sc-jGxEUC jCVVco"><div class="sc-cZBZkQ fypsmc"><div class="sc-gbzWSY jgxetf"><div class="sc-jqIZGH vudGk"><pre>1 2</pre><pre><code class="javascript">import { readFileSync } from 'node:fs'; const data = readFileSync('./file.txt', 'utf8'); </code></pre></div></div></div></div></pre> <h4 id="executing-packaged-binaries">Executing packaged binaries<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h4> <p>If you intend to add extra executables to your application and call them from functions, make sure they are compatible with the <a href="/platform/forge/runtime-reference/" target="_self">Forge runtime environment</a>. You might want to use statically linked executables if possible, or include the required libraries together with the executable.</p> <p>You can execute packaged binaries using the <a href="https://nodejs.org/api/child_process.html" target="_blank">child_process module<style data-emotion="css 1wits42">.css-1wits42{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:16px;height:16px;}.css-1wits42 >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1wits42 >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1wits42 >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1wits42 >svg{width:16px;height:16px;}</style><span role="img" aria-label="Follow" style="--icon-primary-color:currentColor;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1wits42"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M11.031 7A1.03 1.03 0 0010 8.036a1.05 1.05 0 001.044 1.045l3.121.014.014 3.121a1.05 1.05 0 001.045 1.044 1.03 1.03 0 001.036-1.035l-.019-4.161a1.053 1.053 0 00-1.045-1.045L11.035 7h-.004z"/><path d="M13.364 8.292l-7.072 7.071a1.002 1.002 0 000 1.415c.39.39 1.024.39 1.415 0l7.071-7.071A1.002 1.002 0 0014.071 8a1 1 0 00-.707.292z"/></g></svg></span></a>.</p> <pre><div class="sc-jGxEUC jCVVco"><div class="sc-cZBZkQ fypsmc"><div class="sc-gbzWSY jgxetf"><div class="sc-jqIZGH vudGk"><pre>1 2</pre><pre><code class="javascript">import { execFileSync } from 'node:child_process'; const stdout = execFileSync('./binary', ['--args'], { stdio: 'pipe', encoding: 'utf8', }); </code></pre></div></div></div></div></pre> <div class="sc-hkaZBZ bsbZCT"><section class="sc-giOsra hEREHr"><div class="sc-jOVcOr ccUuQb"><style data-emotion="css snhnyn">.css-snhnyn{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;}.css-snhnyn >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-snhnyn >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-snhnyn >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}</style><span aria-hidden="true" style="--icon-primary-color:#FF8B00;--icon-secondary-color:#FFFAE6" class="css-snhnyn"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill-rule="evenodd"><path d="M12.938 4.967c-.518-.978-1.36-.974-1.876 0L3.938 18.425c-.518.978-.045 1.771 1.057 1.771h14.01c1.102 0 1.573-.797 1.057-1.771L12.938 4.967z" fill="currentColor"></path><path d="M12 15a1 1 0 01-1-1V9a1 1 0 012 0v5a1 1 0 01-1 1m0 3a1 1 0 010-2 1 1 0 010 2" fill="inherit"></path></g></svg></span></div><div class="sc-SFOxd KLVHW"><div class="sc-dzOgQY RfwMt"> <p>While you can read files and execute binaries packaged with your app, you must not persist customer data to disk or allow long-running child processes to retain it. If you aren't sure whether a process will cache the data, don't allow it to persist beyond a single function invocation.</p> <p>Refer to <a href="/platform/forge/runtime-reference/#developer-responsibilities" target="_self">Expanded developer responsibilities</a> for more information.</p> </div></div></section></div> <h2 id="connect">Connect<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h2> <p><a href="/platform/adopting-forge-from-connect" target="_self">Connect apps that have adopted Forge modules</a> can include Connect modules and a Connect key.</p> <div class="sc-jdfcpN jMPRQO"><table node="[object Object]"><thead class="sc-eNNmBn igxxMf"><tr class="sc-eEieub jPqTBr"><th class="sc-kNBZmU lhcjXP">Property</th><th class="sc-kNBZmU lhcjXP">Required</th><th class="sc-kNBZmU lhcjXP">Description</th></tr></thead><tbody><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>key</code></span></span></td><td class="sc-eopZyb gzVyrk">Yes</td><td class="sc-eopZyb gzVyrk"> <p>A key to identify the Connect app and its components.</p> <p> <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>key</code></span></span> is environment specific. See <a href="/platform/adopting-forge-from-connect/devloop/#handling-app-keys-environments" target="_self">how to manage environments when using Forge from your Connect app</a>. </p> <p>Note: The production environment of the app must match the Atlassian Marketplace key.</p> </td></tr><tr class="sc-eEieub jPqTBr"><td class="sc-eopZyb gzVyrk"><span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>remote</code></span></span></td><td class="sc-eopZyb gzVyrk"></td><td class="sc-eopZyb gzVyrk"> <p>The key of the <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>remotes</code></span></span> entry that holds the Connect app baseUrl.</p> <p>This is required if the manifest has <span class="sc-jdeSqf cQNBrn"><span style="font-family:function () { return "'SFMono-Medium', 'SF Mono', 'Segoe UI Mono', 'Roboto Mono', 'Ubuntu Mono', Menlo, Consolas, Courier, monospace"; };font-size:inherit;background:#F4F5F7;color:#172B4D;border-radius:3px;display:inline;overflow-x:auto;white-space:pre-wrap;padding:2px 4px;line-height:inherit"><code>connectModules</code></span></span>.</p> </td></tr></tbody></table></div> <h3 id="example">Example<span role="presentation" class="heading-anchor-wrapper"><button class="sc-iCwjlJ bIjwqY"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span role="img" aria-label="copy" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><g fill="currentColor" fill-rule="evenodd"><path d="M12.856 5.457l-.937.92a1.002 1.002 0 000 1.437 1.047 1.047 0 001.463 0l.984-.966c.967-.95 2.542-1.135 3.602-.288a2.54 2.54 0 01.203 3.81l-2.903 2.852a2.646 2.646 0 01-3.696 0l-1.11-1.09L9 13.57l1.108 1.089c1.822 1.788 4.802 1.788 6.622 0l2.905-2.852a4.558 4.558 0 00-.357-6.82c-1.893-1.517-4.695-1.226-6.422.47"/><path d="M11.144 19.543l.937-.92a1.002 1.002 0 000-1.437 1.047 1.047 0 00-1.462 0l-.985.966c-.967.95-2.542 1.135-3.602.288a2.54 2.54 0 01-.203-3.81l2.903-2.852a2.646 2.646 0 013.696 0l1.11 1.09L15 11.43l-1.108-1.089c-1.822-1.788-4.802-1.788-6.622 0l-2.905 2.852a4.558 4.558 0 00.357 6.82c1.893 1.517 4.695 1.226 6.422-.47"/></g></svg></span></button></span></h3> <pre><div class="sc-jGxEUC jCVVco"><div class="sc-cZBZkQ fypsmc"><div class="sc-gbzWSY jgxetf"><div class="sc-jqIZGH vudGk"><pre>1 2</pre><pre><code class="yaml">remotes: - key: connect-app-server baseUrl: https://hello-world-app.example.com app: connect: key: hello-world remote: connect-app-server </code></pre></div></div></div></div></pre> </div><div class="sc-dCVVYJ rJVhP"><div class="sc-hARARD hrxrbx"><p class="sc-ccLTTT gfLKuW">Rate this page:</p><style data-emotion-css="fwv93l">.css-fwv93l{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:0;}.css-fwv93l [data-rating-icon-checked]{display:inline-block;}.css-fwv93l [data-rating-icon]{display:none;}.css-fwv93l label:hover ~ label [data-rating-icon-checked][data-rating-icon-checked],.css-fwv93l input:checked ~ label [data-rating-icon-checked]{display:none;}.css-fwv93l label:hover ~ label [data-rating-icon][data-rating-icon],.css-fwv93l input:checked ~ label [data-rating-icon]{display:inline-block;}.css-fwv93l:hover [data-rating-icon-checked][data-rating-icon-checked]{display:inline-block;}.css-fwv93l:hover [data-rating-icon][data-rating-icon]{display:none;}</style><div class="css-fwv93l"><style data-emotion-css="i9qcsw">.css-i9qcsw{border:0 !important;-webkit-clip:rect(1px,1px,1px,1px) !important;clip:rect(1px,1px,1px,1px) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important;}</style><label for="rating-bottom--empty" class="css-i9qcsw"></label><input type="radio" id="rating-bottom--empty" name="rating-bottom" checked="" class="css-i9qcsw"/><label for="rating-bottom--0" style="transition:transform 100ms cubic-bezier(0.15,1,0.3,1)"><div role="presentation"><div><span class="css-i9qcsw">Unusable</span><span aria-hidden="true" data-rating-icon="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 16.373l3.98 2.193-.76-4.655 3.276-3.347-4.524-.69L12 5.687l-1.972 4.189-4.524.689L8.78 13.91l-.762 4.655L12 16.373zm0 2.283l-3.016 1.662a2 2 0 01-2.939-2.075l.599-3.656-2.57-2.624a2 2 0 011.129-3.377l3.47-.528 1.518-3.224a2 2 0 013.618 0l1.519 3.224 3.47.528a2 2 0 011.127 3.377l-2.569 2.624.599 3.656a2 2 0 01-2.94 2.075L12 18.656z" fill="currentColor"/></svg></span></span><span aria-hidden="true" data-rating-icon-checked="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z" fill="currentColor" fill-rule="evenodd"/></svg></span></span></div></div></label><input type="radio" id="rating-bottom--0" value="1" name="rating-bottom" class="css-i9qcsw"/><label for="rating-bottom--1" style="transition:transform 100ms cubic-bezier(0.15,1,0.3,1)"><div role="presentation"><div><span class="css-i9qcsw">Poor</span><span aria-hidden="true" data-rating-icon="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 16.373l3.98 2.193-.76-4.655 3.276-3.347-4.524-.69L12 5.687l-1.972 4.189-4.524.689L8.78 13.91l-.762 4.655L12 16.373zm0 2.283l-3.016 1.662a2 2 0 01-2.939-2.075l.599-3.656-2.57-2.624a2 2 0 011.129-3.377l3.47-.528 1.518-3.224a2 2 0 013.618 0l1.519 3.224 3.47.528a2 2 0 011.127 3.377l-2.569 2.624.599 3.656a2 2 0 01-2.94 2.075L12 18.656z" fill="currentColor"/></svg></span></span><span aria-hidden="true" data-rating-icon-checked="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z" fill="currentColor" fill-rule="evenodd"/></svg></span></span></div></div></label><input type="radio" id="rating-bottom--1" value="2" name="rating-bottom" class="css-i9qcsw"/><label for="rating-bottom--2" style="transition:transform 100ms cubic-bezier(0.15,1,0.3,1)"><div role="presentation"><div><span class="css-i9qcsw">Okay</span><span aria-hidden="true" data-rating-icon="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 16.373l3.98 2.193-.76-4.655 3.276-3.347-4.524-.69L12 5.687l-1.972 4.189-4.524.689L8.78 13.91l-.762 4.655L12 16.373zm0 2.283l-3.016 1.662a2 2 0 01-2.939-2.075l.599-3.656-2.57-2.624a2 2 0 011.129-3.377l3.47-.528 1.518-3.224a2 2 0 013.618 0l1.519 3.224 3.47.528a2 2 0 011.127 3.377l-2.569 2.624.599 3.656a2 2 0 01-2.94 2.075L12 18.656z" fill="currentColor"/></svg></span></span><span aria-hidden="true" data-rating-icon-checked="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z" fill="currentColor" fill-rule="evenodd"/></svg></span></span></div></div></label><input type="radio" id="rating-bottom--2" value="3" name="rating-bottom" class="css-i9qcsw"/><label for="rating-bottom--3" style="transition:transform 100ms cubic-bezier(0.15,1,0.3,1)"><div role="presentation"><div><span class="css-i9qcsw">Good</span><span aria-hidden="true" data-rating-icon="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 16.373l3.98 2.193-.76-4.655 3.276-3.347-4.524-.69L12 5.687l-1.972 4.189-4.524.689L8.78 13.91l-.762 4.655L12 16.373zm0 2.283l-3.016 1.662a2 2 0 01-2.939-2.075l.599-3.656-2.57-2.624a2 2 0 011.129-3.377l3.47-.528 1.518-3.224a2 2 0 013.618 0l1.519 3.224 3.47.528a2 2 0 011.127 3.377l-2.569 2.624.599 3.656a2 2 0 01-2.94 2.075L12 18.656z" fill="currentColor"/></svg></span></span><span aria-hidden="true" data-rating-icon-checked="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z" fill="currentColor" fill-rule="evenodd"/></svg></span></span></div></div></label><input type="radio" id="rating-bottom--3" value="4" name="rating-bottom" class="css-i9qcsw"/><label for="rating-bottom--4" style="transition:transform 100ms cubic-bezier(0.15,1,0.3,1)"><div role="presentation"><div><span class="css-i9qcsw">Excellent</span><span aria-hidden="true" data-rating-icon="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12 16.373l3.98 2.193-.76-4.655 3.276-3.347-4.524-.69L12 5.687l-1.972 4.189-4.524.689L8.78 13.91l-.762 4.655L12 16.373zm0 2.283l-3.016 1.662a2 2 0 01-2.939-2.075l.599-3.656-2.57-2.624a2 2 0 011.129-3.377l3.47-.528 1.518-3.224a2 2 0 013.618 0l1.519 3.224 3.47.528a2 2 0 011.127 3.377l-2.569 2.624.599 3.656a2 2 0 01-2.94 2.075L12 18.656z" fill="currentColor"/></svg></span></span><span aria-hidden="true" data-rating-icon-checked="true"><style data-emotion="css 1afrefi">.css-1afrefi{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;line-height:1;width:24px;height:24px;}.css-1afrefi >svg{overflow:hidden;pointer-events:none;max-width:100%;max-height:100%;color:var(--icon-primary-color);fill:var(--icon-secondary-color);vertical-align:bottom;}.css-1afrefi >svg stop{stop-color:currentColor;}@media screen and (forced-colors: active){.css-1afrefi >svg{-webkit-filter:grayscale(1);filter:grayscale(1);--icon-primary-color:CanvasText;--icon-secondary-color:Canvas;}}.css-1afrefi >svg{width:24px;height:24px;}</style><span aria-hidden="true" style="--icon-primary-color:#6B778C;--icon-secondary-color:var(--ds-surface, #FFFFFF)" class="css-1afrefi"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z" fill="currentColor" fill-rule="evenodd"/></svg></span></span></div></div></label><input type="radio" id="rating-bottom--4" value="5" name="rating-bottom" class="css-i9qcsw"/></div></div><div class="sc-eNPDpu iARtDw"></div></div></div></div></div></div><div class="sc-eNPDpu iARtDw"></div></div></div><div class="sc-jUpvKA kmRqgF"><footer class="sc-hvvHee APFeF"><div class="sc-eSePXt hbQcmX sc-fvLVrH dUcFyG"><a class="sc-iIHjhz RSHIw" href="https://www.atlassian.com/"><style data-emotion="css 1eu9lrx">.css-1eu9lrx{display:inline-block;position:relative;color:var(--logo-color);fill:var(--logo-fill);line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:normal;height:24px;}.css-1eu9lrx >svg{height:100%;fill:inherit;}</style><span style="--logo-color:#5E6C84;--logo-fill:#5E6C84" aria-label="Atlassian" role="img" class="css-1eu9lrx"> <svg viewBox="0 0 190 32" height="32" xmlns="http://www.w3.org/2000/svg" focusable="false" aria-hidden="true"> <defs> <linearGradient x1="99.684716%" y1="15.8138128%" x2="39.8444399%" y2="97.4388388%" id="uid225221"> <stop stop-color="#5E6C84" offset="0%"></stop> <stop stop-color="#5E6C84" offset="100%"></stop> </linearGradient> </defs> <g stroke="none" stroke-width="1" fill="#5E6C84" > <path fill="url(#uid225221)" d="M6.90502605,15.6123193 C6.76436383,15.4302139 6.53773035,15.3340846 6.30742588,15.35884 C6.0771214,15.3835955 5.876643,15.525635 5.7787929,15.7333781 L0.0719979599,27.0218487 C-0.0337056449,27.2310259 -0.0224063827,27.4794358 0.101860917,27.6783741 C0.226128216,27.8773125 0.445645594,27.9984148 0.68202605,27.9984369 L8.62844459,27.9984369 C8.88847261,28.0044096 9.12761649,27.8581627 9.23847268,27.6253781 C10.9526159,24.1210252 9.91378448,18.7926722 6.90502605,15.6123193 Z"></path> <path fill="#5E6C84" d="M11.0859556,5.33713587 C8.19309829,9.74089822 7.85921851,15.3267488 10.2073011,20.0371359 L14.0383488,27.6176065 C14.1538739,27.8462194 14.3900332,27.9906411 14.6483769,27.9906653 L22.5933685,27.9906653 C22.829749,27.9906431 23.0492663,27.8695408 23.1735336,27.6706025 C23.2978009,27.4716641 23.3091002,27.2232543 23.2033966,27.014077 C23.2033966,27.014077 12.5147056,5.8619594 12.2460792,5.33290058 C12.1377032,5.11315026 11.9118188,4.97410225 11.6646746,4.97500451 C11.4175304,4.97590676 11.1926893,5.11660025 11.0859556,5.33713587 L11.0859556,5.33713587 Z"></path> <path d="M104.2774,14.3919316 C104.2774,17.1872257 105.588069,19.4065198 110.714802,20.3862846 C113.773504,21.0215787 114.414212,21.5100493 114.414212,22.5187551 C114.414212,23.4985198 113.772077,24.1327551 111.617715,24.1327551 C109.013896,24.0864379 106.462135,23.403307 104.189999,22.1442846 L104.189999,26.6972257 C105.733976,27.4465198 107.772754,28.2822846 111.559566,28.2822846 C116.919251,28.2822846 119.045788,25.9175787 119.045788,22.4033434 M119.045788,22.4033434 C119.045788,19.0892257 117.268858,17.5327551 112.25878,16.4668728 C109.491535,15.8615787 108.821574,15.2566375 108.821574,14.3919316 C108.821574,13.297814 109.811889,12.835814 111.646968,12.835814 C113.860906,12.835814 116.045591,13.4986375 118.113622,14.4208728 L118.113622,10.0691081 C116.130615,9.17615406 113.970906,8.73311319 111.792518,8.7724022 C106.840589,8.7724022 104.2774,10.9048728 104.2774,14.3919316" fill="inherit"></path> <polygon fill="inherit" points="173.129997 9.07000017 173.129997 28.0038825 177.20791 28.0038825 177.20791 13.5657649 178.926691 17.3983531 184.694132 28.0038825 189.820865 28.0038825 189.820865 9.07000017 185.742952 9.07000017 185.742952 21.2891766 184.198975 17.7442355 179.567399 9.07000017"></polygon> <rect fill="inherit" x="142.740005" y="9.07000017" width="4.45677247" height="18.9338824"></rect> <path d="M137.600792,22.4033434 C137.600792,19.0892257 135.823862,17.5327551 130.813784,16.4668728 C128.046539,15.8615787 127.376579,15.2566375 127.376579,14.3919316 C127.376579,13.297814 128.366893,12.835814 130.201972,12.835814 C132.41591,12.835814 134.600595,13.4986375 136.668626,14.4208728 L136.668626,10.0691081 C134.685619,9.17615406 132.52591,8.73311319 130.347522,8.7724022 C125.395593,8.7724022 122.832404,10.9048728 122.832404,14.3919316 C122.832404,17.1872257 124.143073,19.4065198 129.269806,20.3862846 C132.328508,21.0215787 132.969216,21.5100493 132.969216,22.5187551 C132.969216,23.4985198 132.327081,24.1327551 130.172719,24.1327551 C127.568901,24.0864379 125.017139,23.403307 122.745003,22.1442846 L122.745003,26.6972257 C124.28898,27.4465198 126.327758,28.2822846 130.11457,28.2822846 C135.474256,28.2822846 137.600792,25.9175787 137.600792,22.4033434" fill="inherit"></path> <polygon fill="inherit" points="69.6599979 9.07000017 69.6599979 28.0038825 78.8204081 28.0038825 80.2627142 23.9115296 74.1456665 23.9115296 74.1456665 9.07000017"></polygon> <polygon fill="inherit" points="51.5549984 9.07000017 51.5549984 13.1620002 56.5069282 13.1620002 56.5069282 28.0038825 60.9925967 28.0038825 60.9925967 13.1620002 66.2941332 13.1620002 66.2941332 9.07000017"></polygon> <path d="M45.0573091,9.07000017 L39.1785647,9.07000017 L32.5050001,28.0038825 L37.6014102,28.0038825 L38.5474889,24.815059 C40.877531,25.4919503 43.3551322,25.4919503 45.6851743,24.815059 L46.6312529,28.0038825 L51.7287333,28.0038825 L45.0573091,9.07000017 Z M42.1177585,21.4007061 C41.287584,21.4006584 40.4616854,21.2831148 39.6651602,21.0516472 L42.1177585,12.7889413 L44.5703569,21.0544708 C43.7736914,21.2849831 42.9477956,21.4015755 42.1177585,21.4007061 L42.1177585,21.4007061 Z" fill="inherit"></path> <path d="M94.6019534,9.07000017 L88.7235658,9.07000017 L82.0500011,28.0038825 L87.1474815,28.0038825 L88.0935601,24.815059 C90.4236023,25.4919503 92.9012034,25.4919503 95.2312455,24.815059 L96.1773242,28.0038825 L101.274805,28.0038825 L94.6019534,9.07000017 Z M91.6627596,21.4007061 C90.8325851,21.4006584 90.0066865,21.2831148 89.2101613,21.0516472 L91.6627596,12.7889413 L94.1153579,21.0544708 C93.3186924,21.2849831 92.4927966,21.4015755 91.6627596,21.4007061 L91.6627596,21.4007061 Z" fill="inherit"></path> <path d="M163.256954,9.07000017 L157.378566,9.07000017 L150.705002,28.0038825 L155.802482,28.0038825 L156.748561,24.815059 C159.078603,25.4919503 161.556204,25.4919503 163.886246,24.815059 L164.832325,28.0038825 L169.930162,28.0038825 L163.256954,9.07000017 Z M160.315977,21.4007061 C159.485802,21.4006584 158.659903,21.2831148 157.863378,21.0516472 L160.315977,12.7889413 L162.768575,21.0544708 C161.971909,21.2849831 161.146014,21.4015755 160.315977,21.4007061 L160.315977,21.4007061 Z" fill="inherit"></path> </g> </svg></span></a><nav class="sc-dXfzlN insOyI"><a class="sc-iIHjhz RSHIw" href="/changelog/">Changelog</a><a class="sc-iIHjhz RSHIw" target="_blank" href="https://status.developer.atlassian.com">System status</a><a class="sc-iIHjhz RSHIw" target="_blank" href="https://www.atlassian.com/legal/privacy-policy">Privacy</a><a class="atl-policy-link atl-policy-link-text sc-iIHjhz RSHIw" target="_blank" href="https://www.atlassian.com/legal/privacy-policy#additional-disclosures-for-ca-residents">Notice at Collection</a><a class="sc-iIHjhz RSHIw" target="_blank" href="/platform/marketplace/atlassian-developer-terms/">Developer Terms</a><a class="sc-iIHjhz RSHIw" target="_blank" href="https://www.atlassian.com/legal/trademark">Trademark</a><a class="optanon-toggle-display hide-optanon-link sc-iIHjhz RSHIw">Cookie preferences</a><span class="sc-aewfc fDSCxc">© <!-- -->2024<!-- --> Atlassian</span></nav></div></footer></div></div><script nonce="EFOV6f+02xxaJDrgpVoJdYQPXrT/2d03nEmPJf0b1yA=" type="text/javascript">(function(){var g=function(e,h,f,g){ this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null}; this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "}; this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0}; this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}}; this.start=function(){var t=this;"complete"!==document.readyState?window.addEventListener?window.addEventListener("load",function(){t.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){t.go()}):t.go()};}; try{(new g(100,"r","QSI_S_ZN_basBS9dBHxSA2iN","https://znbasbs9dbhxsa2in-atlassian.siteintercept.qualtrics.com/SIE/?Q_ZID=ZN_basBS9dBHxSA2iN")).start()}catch(i){}})();</script><div id="ZN_basBS9dBHxSA2iN"></div></div></div> </body> </html>