| 1. Definition | 2. Functional Requirements | 3. Syntax | 4. Semantics | 5. Conformance Testing |
1 Definition
A Data Type defining the rules, parameters, and conditions under which a service is offered, billed, chosen, settled, and accessed.
2 Functional Requirements
| Function | Description |
|---|---|
| Pricing Intent | Specifies the high-level pricing strategy selected by the provider or by the user (e.g., one_time, subscription, pay_per_use). |
| Currency Context | Defines the currency and value representation for all monetary fields (via CurrencyObject). |
| Model Components | Identifies the pricing model sections required by modelType (e.g., oneTime, subscription, payPerUse, etc.). |
| Constraints | Communicates validation rules such as mandatory fields per model type, minimum price ≥ 0, Idurations for time-based terms. |
| Discount Logic | Includes optional discount definitions and applicability scope (percentage, fixed, promo_code). |
| Hybrid Composition | Enables combining multiple pricing models into a single plan with optional weighting for calculation order. |
| Access Conditions | Specifies time windows, quotas, and upgrade paths for freemium or tiered models. |
| Execution Parameters | Captures operational parameters for billing cycles (e.g., billingPeriod, commitmentTerm, autoRenew). |
| Trace Metadata | Provides provenance for auditability (e.g., schema version, originating module, decision path). |
| Semantic Tags | Domain-specific annotations for categorising pricing plans (e.g., premium, promotional). |
| Fallback Status | Indicates whether a pricing configuration is primary, deferred, or a fallback option. |
| DataExcgangeMetadata | Data describing and/or regulating the use, origin, authorisation, and security state of a Data Instance. |
| Trace | Information about the Process producing the SPM and the Time of production. |
| DescrMetadata | Any free-text descriptive metadata. |
3 Syntax
https://schemas.mpai.community/MMM4/V2.2/data/ServicePricingModel.json
4 Semantics
| Label | Description |
|---|---|
| Header | Service Pricing Model Header – Standard “MMM‑SPM‑Vx.y”. |
| MInstanceID | Identifier of the M‑Instance. |
| MEnvironmentID | Identifier of the M‑Environment. |
| SPMID | Identifier of this Service Pricing Model instance. |
| SPMContext | Whether this SPM describes a Service or an AssetPosting. |
| SPMTime | Reference time for this SPM (OSD/V1.5 Time). |
| ModelType | Primary pricing model: OneTime, Subscription, PayPerUse, PayPerTime, Freemium, Tiered, AdSupported, Hybrid. Use Hybrid when combining multiple models. |
| CurrencyObject | Currency object defining the currency for prices and values used in this SPM. |
| OneTime | One‑time purchase model. |
| ├─ Price | One‑time price (number ≥ 0). |
| ├─ IncludesUpdates | Whether updates are included (boolean). |
| └─ SupportWindow | Support window (OSD/V1.5 Time). |
| Subscription | Subscription pricing data. |
| ├─ RecurringPrice | Recurring fee per billing period (number ≥ 0). |
| ├─ BillingPeriod | Billing period (e.g., daily, monthly, yearly) — MMM4/V2.2 BillingPeriods. |
| ├─ CommitmentTerm | Commitment term (ISO 8601 duration or fixed term). |
| ├─ AutoRenew | Auto‑renewal flag (boolean). |
| └─ Trial | Trial details. |
| ├─ Duration | Trial duration (OSD/V1.5 Time). |
| └─ Price | Trial price (MMM4/V2.2 Value). |
| PayPerUse | Usage‑based (metered) pricing. |
| ├─ Meter | Metered resource (e.g., requests, GB, minutes, transactions). |
| ├─ Unit | Unit of measure (e.g., request, GB, minute). |
| ├─ Rate | Base price per unit (number ≥ 0). |
| ├─ MinCommit | Minimum usage commitment per cycle (number ≥ 0). |
| ├─ FreeQuota | Units included at no charge per cycle (number ≥ 0). |
| ├─ OverageRate | Price per unit beyond quota or tiers (number ≥ 0). |
| └─ Tiers[] | Tiered usage brackets. |
| ├─ Threshold | Upper bound for the tier (units). |
| └─ Rate | Rate for that tier (number ≥ 0). |
| PayPerTime | Time‑window pricing. |
| ├─ Window | Rental window (OSD/V1.5 Time). |
| ├─ Price | Price per window (number ≥ 0). |
| └─ GracePeriod | Grace period (time/duration). |
| Freemium | Freemium model. |
| ├─ FreeFeatures[] | List of free features (strings). |
| ├─ UpgradePath | Reference to target tier/subscription (string). |
| └─ UsageLimits | Free‑tier usage limits. |
| ├─ Meter | Meter type. |
| ├─ Unit | Measurement unit. |
| └─ Limit | Maximum free usage (number ≥ 0). |
| Tiered | Tiered plan. |
| └─ Tiers[] | Array of tiers. |
| ├─ Name | Tier name. |
| ├─ Features[] | Features included. |
| ├─ Price | Tier price (number ≥ 0). |
| ├─ BillingPeriod | Tier billing period (MMM4/V2.2 BillingPeriods). |
| └─ Limits{Key} | Arbitrary numeric limits (key → number ≥ 0). |
| AdSupported | Ad‑supported access. |
| ├─ AdProvider | Ad network/provider. |
| ├─ PrivacyPolicyUrl | URL of privacy policy (URI). |
| └─ OptOutAvailable | Whether opt‑out is available (boolean). |
| Discounts[] | Discount definitions. |
| ├─ Type | One of: Percentage, Fixed, PromoCode. |
| ├─ Value | Discount value (number ≥ 0). |
| ├─ AppliesTo | Scope of discount (e.g., section, tier, meter). |
| └─ Validity | Validity interval (OSD/V1.5 Time). |
| Hybrid[] | Hybrid composition (combine sections). |
| ├─ Ref | One of: OneTime, Subscription, PayPerUse, PayPerTime, Freemium, Tiered, AdSupported. |
| └─ Weight | Optional weight/priority (number ≥ 0). |
| SPMStatus | Either “Model” or “Final”. |
| Chosen | Frozen snapshot of the chosen model and parameters. |
| ├─ ModelType | Chosen model type. |
| └─ Parameters | Parameter set at selection time. |
| ├─ EffectivePeriod | Validity window. |
| │ ├─ Start | Start time. |
| │ └─ End | End time. |
| ├─ Allowances[] | Frozen quota allowances. |
| │ ├─ Meter | Meter type. |
| │ ├─ Unit | Unit of measure. |
| │ ├─ Quantity | Quantity allowed. |
| │ ├─ Window | Applicable window label. |
| │ └─ Rollover | Whether unused quota rolls over. |
| ├─ Overage | Overage pricing. |
| │ ├─ Rate | Overage rate. |
| │ └─ Unit | Overage unit. |
| ├─ RateLimit | Rate limiting constraints. |
| │ ├─ MaxPerWindow | Maximum allowed per window. |
| │ ├─ Window | Window size. |
| │ └─ Burst | Burst allowance. |
| └─ PriceBreakdown | Optional breakdown of base price, discounts, and final charges. |
| Settlement | Payment proof for the SPM‑governed transaction. |
| ├─ SettlementTime | Time of settlement (OSD/V1.5 Time). |
| ├─ TargetID | Identifier of relevant service/asset/licence. |
| ├─ Transaction | Transaction reference (MMM4/V2.2 Transaction). |
| └─ Evidence[] | Optional receipts or provider references (Type, ID). |
| AssetPosting | Data for posting an Asset under this SPM. |
| ├─ AssetID | ID of the asset being posted. |
| ├─ Licence / LicenceTerms | Terms under which the asset is licensed. |
| ├─ SenderPreValue | Value before transaction. |
| ├─ SenderPostValue | Value after transaction. |
| ├─ ReceiverPostValue | Value after transaction for receiver. |
| ├─ ValueToSender | Final value to sender. |
| ├─ SenderWalletID | Wallet of sender. |
| ├─ ServiceProviderWalletID | Wallet of service provider. |
| ├─ ServiceProviderLicence | Licence of service provider. |
| ├─ ReceiverLicence | Licence of receiver. |
| └─ Transaction | Transaction object. |
| Conditional Rules | (ModelType‑driven) |
If ModelType = OneTime |
OneTime required. |
If ModelType = Subscription |
Subscription required. |
If ModelType = PayPerUse |
PayPerUse required. |
If ModelType = PayPerTime |
PayPerTime required. |
If ModelType = Freemium |
Freemium required. |
If ModelType = Tiered |
Tiered required. |
If ModelType = AdSupported |
AdSupported required. |
If ModelType = Hybrid |
Hybrid required. |
| DataExchangeMetadata | Regulated/controlled exchange metadata (AIF/V3.0). |
| Trace | Information about the producing Process and time (AIF/V3.0). |
| DescrMetadata | Free‑text descriptive metadata (≤ 2048 chars). |
5. Conformance Testing
A Data instance Conforms with MMM-TEC Service Pricing Model (MMM-TEC) if:
- Its JSON Object validates against its JSON Schema.
- Any included JSON Object validates against its JSON Schema.
- All Data in the JSON Object:
- Have the specified Data Types.
- Conform with the Qualifiers signaled in their JSON Schemas.