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
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
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