Skip to main content
The app manifest is a JSON document that registers your app with JTL. It declares the app’s identity, the URL JTL loads during setup, and the capabilities through which your app integrates with the platform. You register your app by pasting this manifest into the JSON Code Editor in the Partner Portal under Manage apps. You can also register an app using the registration wizard form directly.

Top-level Fields

Two fields identify the app and its release.

Lifecycle

The lifecycle object defines the URL JTL loads when a merchant installs your app. The URL must be a standard http:// or https:// URL.
The manifest validator accepts {metadata.*} placeholders in this URL, but JTL does not substitute them at runtime. Use a static URL, and encode any app identity you need directly in the path or query string.

Identifying the App

If you publish multiple apps, each one needs its own configurationUrl. Two apps sharing the same URL cause the wrong setup UI to render when a merchant installs either one. Give each app a distinct URL, either with a separate route:
Or by encoding the app’s identity in the query string:
Use separate routes if you control routing and want cleaner URLs. Use query parameters if you prefer a single handler that switches behavior based on the app.
A working configuration flow is included when you create an app with the CLI, npm create @jtl-software/cloud-app@latest.

Capabilities

Capabilities define where and how your app integrates with JTL. Each key under capabilities maps to a surface. See Architecture Overview for a description of each integration type.

Hub

Controls how the app appears in the JTL Hub dashboard. When a merchant clicks the app’s card, the platform redirects to this URL. Without a redirectUrl, the app card has no destination.

ERP Menu Items

Add entries to the ERP Cloud sidebar under the App section. Each menu item links to a page in your app, loaded inside the ERP iframe.

ERP API Scopes

Declare the JTL-Wawi API resources your app intends to use. Declared scopes are validated against the allowed list at registration. Scope values come from a fixed list, and any value outside it is rejected at registration. A subset for reference:
Runtime enforcement of these scopes has not shipped yet, so declaring a scope here does not currently restrict what your app can call. Once enforcement is live, the API will reject calls that exceed the declared set, and the merchant will see the declared scopes at install time. See Scopes & Permissions for the current list.

ERP Panel

Add a sidebar panel that appears alongside an ERP view. Panels are context-aware and show only on matching pages. When more than one installed app targets the same view, each app renders as a tab within the panel, and tabs beyond the panel width collapse into an overflow menu. For reading the current entity in a panel, see Reading Panel Context.

Complete Example

A manifest declaring a Hub redirect, one ERP menu item, three API scopes, and one panel on the customers view:

What’s Next?

Listing Manifest

Define how your app appears in the App Store or is shared privately.

App Shell & UI

Communicate with the host using AppBridge, and build UI with Platform UI components.