Open-source telecoms. Operator-controlled.0.7.0-dev / Development preview ↗
Search all guides

Build around independent authorities

The public interfaces connect your systems without assuming a billing vendor or database schema.

Define the boundaries

CustomerAccess authenticates and authorises mutations. SelectionCatalog resolves owned eligible products and resources. OrderingPlatform owns cart storage and authoritative order lines; OrderingLifecycle connects actual update, checkout and fulfilment stages. OfferEvidence records scoped carrier offers.

Keep effects separate

AvailabilityCarrier is read-only. ProvisioningAdapter checks readiness and confirms allocation and activation. BillingIntegration supplies operation guards, commercial preflight and reconciliation. Search and checkout verification must not allocate, activate or bill.

Wire and prove the lifecycle

Load the runtime before private configuration, implement every required adapter and map callbacks to the real platform. Rendering a picker does not prove checkout protection. Exceptions must block the corresponding operation. Public in-memory fixtures show flow, not production durability.

Your platform.
Explicit hand-off points.

These are public extension contracts. Their real authority, storage and transport come from your implementation.

  1. 01
    CustomerAccess

    Authenticate + permit mutation

    Operator implementation
  2. 02
    SelectionCatalog

    Resolve owned, eligible resource

    Operator implementation
  3. 03
    OrderingPlatform

    Persist selection + immutable origin

    Operator implementation
  4. 04
    BillingIntegration

    Guard operation + preflight

    Operator implementation
  5. 05
    ProvisioningAdapter

    Preflight + confirm allocation

    Operator implementation
  6. 06
    BillingIntegration

    Reconcile confirmed outcome

    Operator implementation

Adapter acceptance map

Adapter acceptance map
ContractYour implementation must provide
CustomerAccessTrusted customer identity; method, CSRF and current mutation permission
SelectionCatalogAuthoritative owned product/resource resolution and eligibility
OrderingPlatformSaved canonical selections, immutable order origins and guarded fulfilment
OrderingLifecycleActual update, checkout and allocation callbacks that propagate failure
OfferEvidenceScoped, expiring server observations with original offer timestamps
ProvisioningAdapterReadiness checks, duplicate-assignment protection and matching confirmation
BillingIntegrationDurable operation guards, commercial preflight and post-provisioning reconciliation
AvailabilityCarrierRead-only bounded carrier transport shared by all availability consumers

Public selection context constructor

Public selection context constructor
public function __construct(
    public readonly string $kind,
    public readonly string $accountId,
    public readonly string $productId,
    public readonly string $resourceId
)