Apps

Fields

id

stringrequired

ID of the app, used to identify itself in code. For example, my_app.

name

stringrequired

Name of the app.

type

string

Type of the app. Some configurations apply differently based on the type of app, for example, theme apps cannot define models, content, functions, or settings.

  • admin: Enhances functionality of the Swell Admin dashboard or API.
  • integration: Integrates with an external service. E.g., an email provider or payment gateway.
  • storefront: Implements a storefront experience. E.g., a store website, page builder, or checkout.
  • theme: A theme created for a specific storefront app, for example Proxima.
  • channel: Implements an external sales channel. E.g. Amazon marketplace.

version

string

Semver-formatted version number. This value can be automatically incremented using the swell app version CLI command. Defaults to "1.0.0".

description

string

A brief description of the app.

permissions

array of permission

An array of permission scopes limiting which store data the app can access. When a merchant installs the app, Swell issues it an access token restricted to the scopes declared here.

Defaults to [], which grants unrestricted access to store data. Apps published to the Swell App Store must declare the specific scopes they need.

Each scope combines an access level with a collection name:

  • read_{collection}: grants read access. For example, read_orders.
  • write_{collection}: grants read and write access. write_orders also covers read_orders, so there is no need to declare both.

Use the base collection name. read_accounts also covers its child collections, such as accounts:cards.

It is not necessary to declare scopes for resources your app defines. An app always has full access to its own models, settings, and app record.

Permissions are recorded with each version of your app. The scopes granted on install are those declared by the version the merchant installs, so changing them takes effect with your next released version.

storefront

object

For storefront apps only, configures storefront properties including menu and theme structure.

theme

object

For theme apps only, configures theme properties including storefront app compatibility and style presets.

preview_src

string

For storefront and theme apps only, relative path of an image asset representing the main desktop preview of the app in the App Store catalog. For example, assets/preview-desktop.jpg.

preview_mobile_src

string

For storefront and theme apps only, relative path of an image asset representing the main mobile preview of the app in the App Store catalog. For example, assets/preview-mobile.jpg.

images

array of image

List of images to display for the app in the App Store catalog.

highlights

array of highlight

List of feature highlights to display for the app in the App Store catalog.

features

array of features

For storefront and theme apps only, list of enumerated features to associate with in the App Store catalog.

  • multi_currency: Multi-currency apps support selling in multiple currencies.
  • multi_language: Multi-language apps support selling in multiple languages.
  • bulk_pricing: Bulk pricing apps support selling in bulk.
  • account_pricing: Account pricing apps support selling to different customer groups.

More feature enumerations are coming soon.

use_cases

array of use_case

For storefront and theme apps only, list of enumerated use-cases to associate with in the App Store catalog.

  • direct_to_consumer: Direct to consumer apps are designed for selling directly to consumers.
  • wholesale: Wholesale apps are designed for selling to other businesses.
  • marketplace: Marketplace apps are designed for selling products from multiple vendors.
  • digital_goods: Digital goods apps are designed for selling digital products.

More use-case enumerations are coming soon.

purchase_options

array of purchase_option

For storefront and theme apps only, list of enumerated purchase-options to associate with in the App Store catalog.

  • standard: Sell one-time purchases.
  • subscription: Sell recurring purchases on a schedule.
  • preorder: Sell products before they're available for delivery.

More purchase-option enumerations are coming soon.

full_description

string

A longer text description of the app's features and capabilities, to be displayed in the App Store catalog. Supports up to 3,500 characters.

demo_url

string

URL of a website where users can see a demonstration of the app's features and capabilities.

support_url

string

If the app developer offers support to merchants, URL of the website where a user can get help with the app.

documentation_url

string

If the app provides written documentation to merchants, URL of the website where a user can get read the docs.

repository_url

string

If the app is open-source, URL of the website where a user can find a Git repository of the app's code base.

price

currency

Price the merchant must pay to use the app, charged according to price_interval. Defaults to 0 (free).

price_external

boolean

Indicates the app is paid for through an external service. When true, the merchant pays for access to the app's features externally and Swell does not charge the price. Defaults to false.

price_interval

string

Interval on which the app price is charged. When price is greater than 0, defaults to monthly.

  • once: The merchant is charged a one-time price for the app.
  • monthly: The merchant is charged the app price on a monthly subscription basis.

price_trial_days

int

Optional number of free trial days before the merchant is first charged for the app. Defaults to no trial period.

extensions

array of extension

List of extensions the app implements to integrate with core platform features such as payments, shipping, and tax calculation. Extension events are handled by app functions. See the Extensions guide for details.

The swell.json model
{
  "id": "honest_reviews",
  "name": "Honest Reviews",
  "description": "Honest reviews from honest people",
  "version": "1.0.6",
  "type": "admin",
  "permissions": [
    "read_orders",
    "write_products",
    "write_accounts"
  ]
}