Skip to content

Marketplace — aggregate roots

Generated from the architecture model

This page is rendered from model/**/*.yaml by tools/docs_model during mkdocs build. Edit the YAML, not this page; hand-written design lives on the linked service, platform and plane pages.

Aggregate Service Root entity Events Tables
PricingPlan LicenseService PricingPlan PricingPlanChanged PricingPlans
Entitlement LicenseService Entitlement EntitlementGranted, EntitlementStateChanged Entitlements
Publisher LicenseService Publisher PublisherCertified Publishers, Reviews
Listing MarketplaceCatalogService Listing ListingPublished, ListingStateChanged Listings, ListingDependencies
Installation MarketplaceCatalogService Installation ListingInstalled, ListingRemoved Installations

PricingPlan (LicenseService)

The price of a listing: model, amount and currency, included editions, metering dimension for usage pricing, trial terms, and the publisher's revenue share.

Field Type Required Description
pricingId guid yes
tenantId string yes
listingId guid yes
model enum:PricingModel yes
amountUsd decimal no
includedEditions list:string yes
meteringDimension string no e.g. runs, tokens, instances
trialDays int no
revenueSharePct decimal yes
active bool yes

Invariants

  • Usage pricing meters through the Factory's metering (BC-34) and is billed on the tenant's Factory invoice; the marketplace never bills separately.

Entitlement (LicenseService)

A tenant's right to install and use a listing: the acquisition (plan, seats or usage terms), state, validity, the Factory subscription it bills to, and the license record with terms and provenance.

Field Type Required Description
entitlementId guid yes
tenantId string yes
listingId guid yes
pricingId guid yes
subscriptionId guid yes Factory subscription (BC-34).
seats int no
state enum:EntitlementState yes
validFrom datetime yes
validTo datetime no
licenseTermsRef string yes
acquiredBy string yes

Invariants

  • An entitlement is granted only against an active Factory subscription whose edition allows the listing kind (D34).
  • Suspension of the subscription suspends entitlements; installations stay but new runs using the asset are refused by policy.

States (EntitlementState)

stateDiagram-v2
    Pending --> Active : AcquisitionConfirmed
    Active --> Suspended : SubscriptionSuspendedOrPaymentFailed
    Suspended --> Active : Restored
    Active --> Expired : ValidToPassed
    Active --> Revoked : ListingRevokedOrViolation
Hold "Alt" / "Option" to enable pan & zoom

Publisher (LicenseService)

A publisher (ConnectSoft, a partner organization or a tenant) with certification state, identity, payout details by reference, agreements, and the ratings and reviews of its listings.

Field Type Required Description
publisherId guid yes
tenantId string yes
name string yes
state enum:PublisherState yes
agreementRef string yes
payoutRef string no
ratingAverage decimal no
certifiedAt datetime no

Invariants

  • Only Certified publishers may list publicly; certification is a Platform admin decision with evidence.
  • Reviews come from tenants with an active or past entitlement; one review per tenant per listing.

Listing (MarketplaceCatalogService)

A marketplace listing of one asset or product: publisher, kind, the Published release it points to (never a copy), evaluation evidence and provenance references, compatibility (Factory editions, template versions, topologies), pricing reference (BC-28), visibility and state.

Field Type Required Description
listingId guid yes
tenantId string yes Platform tenant for public listings; the publisher's tenant otherwise.
publisherId guid yes
kind enum:ListingKind yes
assetId string yes
releaseId string yes Published release in BC-04 (or product release for operated products).
evidenceRef string yes Evaluation record (ADR-0021).
compatibility json yes editions, template versions, topologies, model profiles required
dependencies json yes Other listings or asset releases required.
pricingRef guid no
visibility enum:Visibility yes
state enum:ListingState yes
documentRefs json yes Description, screenshots, changelog as artifacts.
listedAt datetime no

Invariants

  • A listing references a Published release with evaluation evidence; a Deprecated or Revoked release delists automatically.
  • A listing never copies an asset; installation is a scoped reference to the release in the installing tenant's registry.
  • Public visibility needs Platform admin approval of the listing (publication class) and a certified publisher.

States (ListingState)

stateDiagram-v2
    Draft --> InReview : Submit
    InReview --> Listed : Approved
    InReview --> Draft : ChangesRequested
    Listed --> Suspended : PolicyOrEvidenceIssue
    Suspended --> Listed : Resolved
    Listed --> Delisted : ReleaseDeprecatedOrPublisherDelists
Hold "Alt" / "Option" to enable pan & zoom

Installation (MarketplaceCatalogService)

The installation of a listing into a tenant (and optionally a project): the entitlement checked, the scoped release reference created in the tenant's asset registry, the version installed, and updates offered when the listing moves to a newer release.

Field Type Required Description
installationId guid yes
tenantId string yes
projectId string no
listingId guid yes
releaseId string yes
entitlementId guid no
state enum:InstallationState yes
installedBy string yes
installedAt datetime no
updateAvailableReleaseId string no

Invariants

  • Installation needs an entitlement (free listings have an implicit one) and the tenant's policy allow for the listing kind.
  • Installing never changes the tenant's own assets; it adds a scoped reference that the tenant's policy may restrict further.

States (InstallationState)

stateDiagram-v2
    Requested --> EntitlementChecked : EntitlementOk
    EntitlementChecked --> Installed : ReferenceCreated
    Installed --> Updating : UpdateAccepted
    Updating --> Installed : ReferenceUpdated
    Installed --> Removed : Remove
    Requested --> Failed : EntitlementMissingOrPolicyDeny
Hold "Alt" / "Option" to enable pan & zoom