TorbatYar/docs/reference/product-catalog.md
2026-07-28 20:39:10 +03:30

6.9 KiB
Raw Blame History

Platform Product Catalog

Architecture / contracts only. Open-ended product model — never a closed enum.
ADR: ADR-023 (v1.1 amendment)
Contract version: platform-product.v1
Registry: product-registry.md


1. Purpose

Every commercial offering in the TorbatYar ecosystem is a PlatformProduct.

Products are installable registry entries. Adding a product MUST NOT require changing Core commercial architecture — only registry + documentation (+ optional bundle mapping).

Automation is not a PlatformProduct — see automation-catalog.md.


2. Aggregates

2.1 PlatformProduct

Field Type Meaning
product_code string Stable unique code (open registry)
display_name string Human label
category_code string Ref → PlatformProductCategory
default_version string Current version_code
commercial_status enum planned | preview | ga | deprecated | retired
maturity enum concept | alpha | beta | stable | mature
visibility PlatformProductVisibility
lifecycle PlatformProductLifecycle
metadata PlatformProductMetadata
tags PlatformProductTags
owner_service_identifier string? Owning runtime service when materialized
documentation_ref string Path/URL to docs
ext object Additive reserved

2.2 PlatformProductCategory

Field Type Meaning
category_code string Open string (e.g. platform, vertical, channel, future)
display_name string
parent_category_code string? Optional hierarchy
sort_order int

Categories are open. Examples (non-exhaustive, not hardcoded limits): platform, commerce, operations, engagement, vertical, content, infrastructure, ai, future.

2.3 PlatformProductCapability

Field Type Meaning
product_code string
capability_code string Ref → Capability Registry — never inline-define
role enum provides | consumes | requires
required bool

2.4 PlatformProductDependency

Field Type Meaning
product_code string Subject
depends_on_kind enum product | capability | service | extension | automation_pack
depends_on_code string Target code
relation enum See dependency-graph.md: requires | optional | conflicts | recommended | deprecated | replacement
notes string?

2.5 PlatformProductVisibility

Field Type Meaning
public_catalog bool
admin_only bool
partner_only bool
hidden bool
regions[] string[] Future
tenant_tiers[] string[] Soft gate

2.6 PlatformProductLifecycle

Field Type Meaning
sellable bool May appear in commercial offers
installable bool May be activated for a tenant
grandfathered bool
replacement_product_code string?
sunset_at datetime?

2.7 PlatformProductMetadata

Field Type Meaning
locale_labels map i18n
icon_key string?
sort_order int
marketing_blurb string? Non-normative
ext object

2.8 PlatformProductVersion

Field Type Meaning
product_code string
version_code string Commercial/product version
changelog string
capability_bindings[] PlatformProductCapability
dependencies[] PlatformProductDependency
required_services[] string[] Service identifiers
optional_services[] string[]
reserved_features[] string[] Feature keys reserved / not yet implemented
compatibility PlatformProductCompatibility
marketplace MarketplaceCompatibilityDeclaration See marketplace section / product-registry.md
extension_pubs[] string[] Extension codes published by this version
automation_pack_refs[] string[] Automation pack refs (not products)
effective_from / effective_to datetime?

2.9 PlatformProductCompatibility

Field Type Meaning
min_platform_commercial_version string e.g. commercial.v1.1
compatible_product_codes[] string[] Soft list
incompatible_product_codes[] string[]
published_resource_compatible bool Aligns with ADR-022 when true
payment_l1_required bool Needs Core payment entitlement
notes string?

2.10 PlatformProductTags

Field Type Meaning
tags[] string[] Open tag registry

3. Illustrative product matrix (examples — NOT a closed set)

product_code (example) Display name Category (example) Maturity
product.crm Torbat CRM platform stable
product.pay Torbat Pay commerce stable
product.pages Torbat Pages content stable
product.driver Torbat Driver operations stable
product.restaurant Restaurant vertical stable
product.healthcare Healthcare vertical beta
product.beauty Beauty vertical beta
product.accounting Accounting platform stable
product.communication Communication engagement stable
product.loyalty Loyalty engagement stable
product.marketplace Marketplace commerce concept
product.qr QR channel concept
product.short_link Short Link channel concept
product.business_card Business Card channel concept
product.booking Booking operations concept
product.ticketing Ticketing operations concept
product.events Events engagement concept
product.learning Learning content concept
product.automation (forbidden as product — use Automation Catalog)
product.storage Storage infrastructure concept
product.ai.* Future AI Products ai concept

Rule: Any future product.* code may be registered without amending this architecture documents structure.


4. Invariants

  1. Product codes are an open string registry — architecture MUST NOT hardcode a closed product list.
  2. Products consume capabilities from the Capability Registry; they do not redefine them.
  3. Marketplace remains an independent product; others declare marketplace compatibility only.
  4. Automation packs are referenced, never classified as PlatformProducts.
  5. Implementation of a product requires a future registered phase — registration alone does not ship engines.