Manifest Reference

Extension manifest.json schema and fields

Overview

The manifest.json file is the metadata document that describes your extension to the Angage Marketplace. It declares your extension's identity, required scopes, hooks, UI extensions, and webhooks. The current schema version is 1.0.

Required Fields

  • name — string, max 255 characters. Display name of the extension.
  • slug — string, max 100 characters, must match ^[a-z0-9\-]+$. Unique URL identifier.
  • version — string, semantic version (e.g. 1.0.0 or 1.0.0-beta.1).
  • description — string, max 2000 characters.
  • author — object containing name, email, and optional url.
  • category — string, max 100 characters.
  • pricing — object with type: one of free, paid, or freemium.

Optional Fields

  • icon — URL to an icon image.
  • requires.angage_erp — minimum required ERP version.
  • requires.api_version — required platform API version.
  • scopes — array of OAuth scopes the extension requires.
  • optional_scopes — array of additional scopes the user may grant.
  • hooks — object declaring action and filter hooks.
  • ui_extensions — array describing where the extension renders UI inside the ERP.
  • webhooks — array of webhook subscriptions.
  • settings_url — URL to the extension's settings page.

OAuth Scopes

The following scopes are recognised by the platform:

  • invoices:read
  • invoices:write
  • payments:read
  • payments:write
  • customers:read
  • customers:write
  • products:read
  • products:write
  • inventory:read
  • inventory:write
  • orders:read
  • orders:write
  • reports:read
  • settings:read
  • settings:write
  • webhooks:manage

Webhook Events

Extensions may subscribe to the following events:

  • app.installed
  • app.uninstalled
  • app.activated
  • app.deactivated
  • app.scopes_updated
  • invoice.created
  • invoice.updated
  • invoice.paid
  • payment.received
  • customer.created
  • customer.updated
  • order.created
  • order.updated
  • product.created
  • product.updated
  • inventory.adjusted

UI Extension Locations

UI extensions can be declared at any of these locations:

  • dashboard.widget
  • invoice.sidebar
  • invoice.line_item
  • customer.tab
  • product.tab
  • settings.section
  • navigation.menu_item
  • order.sidebar
  • report.section

Complete Example

{
    "name": "Acme Invoice Helper",
    "slug": "acme-invoice-helper",
    "version": "1.0.0",
    "description": "Adds smart totals and reminders to invoices.",
    "author": {
        "name": "Acme Pty Ltd",
        "email": "[email protected]",
        "url": "https://acme.example"
    },
    "category": "Accounting",
    "icon": "https://acme.example/icon.png",
    "pricing": {
        "type": "freemium"
    },
    "requires": {
        "angage_erp": "12.0.0",
        "api_version": "v1"
    },
    "scopes": ["invoices:read", "invoices:write", "customers:read"],
    "optional_scopes": ["payments:read"],
    "hooks": {
        "action": ["invoice.after_save"],
        "filter": ["invoice.totals"]
    },
    "ui_extensions": [
        {
            "location": "invoice.sidebar",
            "type": "iframe",
            "url": "https://acme.example/embed/invoice"
        }
    ],
    "webhooks": [
        { "event": "invoice.created", "url": "https://acme.example/webhooks/invoice" },
        { "event": "tenant.data_request", "url": "https://acme.example/webhooks/data-request" },
        { "event": "tenant.data_redact", "url": "https://acme.example/webhooks/data-redact" }
    ],
    "settings_url": "https://acme.example/settings"
}