> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackra.figentra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 0355 — Marketplace: one Integration with up to five roles, one app market, and open to any developer

> Accepted · 2026-10-25

> [!NOTE]
>
> Amends [0218](https://docs.stackra.figentra.com/adr/0218-integrations-the-connector-sdk-and-connections-per-chain-level.md) (decision
> 5: the marketplace model is decided here) and
> [0308](https://docs.stackra.figentra.com/adr/0308-integrations-v3-1-provider-descriptions-connection-stores-and-webhooks.md) (rule 21:
> third-party publishers are in scope, behind review), each by a Note.

## Context

[0218](https://docs.stackra.figentra.com/adr/0218-integrations-the-connector-sdk-and-connections-per-chain-level.md) decision 5 left the marketplace model to
Figentra OS. [0308](https://docs.stackra.figentra.com/adr/0308-integrations-v3-1-provider-descriptions-connection-stores-and-webhooks.md) rule 21 put
third-party publishers out of scope. Nothing said how one provider that plays several parts (Slack is a chat channel, an
app surface and a workflow trigger) is described once, or which providers a tenant sees in the market. First-party
modules ([0201](https://docs.stackra.figentra.com/adr/0201-the-app-split-framework-platform-core-and-first-party-apps.md) decision 3) and partner apps had no
shared install and billing path. The owner answered these on 2026-10-25: the round-3 integration questions 5 to 7 and
11, and the OS questions OS-127, OS-128, OS-129, OS-217 and OS-382, with the round-9 pricing answer.

## Decision

**One provider, one Integration (round-3 #5).**

1. A provider is one Integration: one description, one Connection shape and one webhook route
   ([0308](https://docs.stackra.figentra.com/adr/0308-integrations-v3-1-provider-descriptions-connection-stores-and-webhooks.md) rules 1, 2 and 15). It plays
   one or more of five roles, declared on the Integration so the listing can show them:
   * **driver**: a capability we own calls it through a port (send a message, charge a card, store a file, clear an
     e-invoice). The port belongs to the package or OS service that owns the capability.
   * **channel**: a driver behind one notifications transport (mail, sms, whatsapp, push, inApp, chat, voice).
     Products declare channels, never providers
     ([0223](https://docs.stackra.figentra.com/adr/0223-notifications-channels-cascading-templates-manual-sends-and-preferences.md) decision 2).
   * **surface**: its host shows our tools, commands or cards
     ([0348](https://docs.stackra.figentra.com/adr/0348-integration-surfaces-assistant-hosts-chat-apps-messaging-flows-and-wallet-passes.md)).
   * **connector**: it holds records we sync or starts our workflows, with triggers, actions and syncs
     ([0218](https://docs.stackra.figentra.com/adr/0218-integrations-the-connector-sdk-and-connections-per-chain-level.md) decision 3).
   * **webhooks**: it sends us events, as `WebhookEvent<I>` on the same Integration, never a second route.
2. **Listed only when the tenant is involved.** An Integration is listed in the app market only if a tenant connects
   it, consents to it or pays for it. An Integration whose only credential is the platform's has a platform Connection
   and no listing.
3. **Slack (round-3 #6)** is one Integration: the driver of the `chat` channel, the Slack app surface, and workflow
   triggers and actions.
4. **WhatsApp (round-3 #7)** is its own channel transport, not a variant of SMS.
5. **Ad and social platforms (Commerce answers, Channels).** Meta, TikTok, Snap and Google are one Integration each,
   covering the shop, the catalogue feed and tracking.
6. **Muslin's connector catalogue (round-3 #11)** becomes shared Integration listings; it is not kept as a second
   catalogue.

**One app market (round 9).**

7. One app market holds first-party modules, partner apps and connector listings: one install flow, one bill, and an
   entitlement per module. A listing's price stays a reference to an Entitlement (0308 rule 21).
   **Developers.**

8. **Open to any developer (OS-127).** Anyone can create an app, integrate it and test it in developer sandboxes. A
   review step approves an app before it is listed. The registry carries the review state, developer sandboxes and the
   partner payout and fee-schedule records a product needs to bill partner apps on the tenant's one invoice.

**Settled by their recommended default (owner rule, `default-applied.md`).**

9. Tenant admins install modules per tenant; organisation admins may force-install or allow-list apps for child
   tenants (OS-122). Minor and patch versions auto-update; a major version or new permissions wait for admin consent
   (OS-123). Uninstall keeps the module's data for a retention window, then deletes it with notice; legal holds win
   (OS-124). A disabled paid module is not billed from the next period (OS-125).

**Figentra's choices.**

10. Which connectors ship at launch and how they are priced, partner billing and fee schedules, the agency programme,
    listing prices, review rules, private apps, partner data-class limits, the developer portal and on-prem app bundles
    are Figentra OS ADRs
    [0037](https://docs.os.figentra.com/adr/0037-registry-and-the-app-market-modules-partner-apps-developers-and-agencies),
    [0038](https://docs.os.figentra.com/adr/0038-connectors-pricing) and
    [0039](https://docs.os.figentra.com/adr/0039-developer-platform-on-prem-and-licensing) (owner round 22,
    [0259](https://docs.stackra.figentra.com/adr/0259-module-placement-three-homes.md)).

## Consequences

* A provider is described and listed once, whatever it does. Slack and Meta are not three listings each.
* The market shows a tenant only what the tenant connects, consents to or pays for. Platform plumbing stays out of it.
* One install flow and one invoice serve first-party modules and partner apps alike.
* Developer sandboxes, a review queue and partner payout records must exist before the first partner app is listed.
* The Activepieces piece format stays out of scope (0308 rule 21); only the publisher restriction changes.

## Enforcement

planned — a `roles` declaration on the Integration (or derived by gen from the classes that bind it), checked by gen
(STA-339/340); the listing schema in `@stackra/integrations` (today `IntegrationListing` holds only `docsUrl`); the OS
registry and integrations services for the install flow, review queue and partner payouts.

## Open questions

1. **Partner apps versus partner connectors.** OS-127 opens app publishing to any developer; OS-217 keeps partner
   connectors for later. May a partner app declare its own Integration (its own provider credentials and webhooks) at
   launch, or only use first-party Integrations? Not decided.
2. **Shelves.** Whether connector listings and apps are separate shelves inside the one app market is not decided.

## Supersedes and sources

Supersedes: none. Amends, by Note:
[0218](https://docs.stackra.figentra.com/adr/0218-integrations-the-connector-sdk-and-connections-per-chain-level.md) decision 5 and
[0308](https://docs.stackra.figentra.com/adr/0308-integrations-v3-1-provider-descriptions-connection-stores-and-webhooks.md) rule 21. Reads with
[0201](https://docs.stackra.figentra.com/adr/0201-the-app-split-framework-platform-core-and-first-party-apps.md),
[0214](https://docs.stackra.figentra.com/adr/0214-registry-v2-and-the-module-install-lifecycle.md),
[0274](https://docs.stackra.figentra.com/adr/0274-app-grants-and-the-connect-app-page.md),
[0348](https://docs.stackra.figentra.com/adr/0348-integration-surfaces-assistant-hosts-chat-apps-messaging-flows-and-wallet-passes.md),
[0356](https://docs.stackra.figentra.com/adr/0356-choosing-a-provider-per-tenant-and-market-through-the-connection-with-a-market-default.md) and
[0358](https://docs.stackra.figentra.com/adr/0358-the-stackra-licence-and-one-billing-engine-with-the-seller-as-a-parameter.md). Sources: owner decisions in
chat, 2026-10-25: round-3 questionnaire 5 to 7 and 11 (`notes/handover/360/questionnaire-round-3.md`); Commerce
questionnaire Answers, Channels (`360/questionnaire-commerce.md`); OS rounds 9, 12, 15 and 22 (OS-127) and the defaults OS-122 to OS-125 (`notes/handover/os/`); the
role rule of `360/integrations-and-marketplace.md` section 1.3.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.