Skip to main content

Module integration

Module integration 

Source
Expand description

Stable integration surface for composing services (the deliberate public API consumers depend on). Stable integration surface for composing services.

This module is the deliberate, published API a consumer depends on. It re-exports exactly the types and functions a composing service (e.g. serpa-posman-service) needs to mount POS, implement the outbound ports, and drive recognition — gathered under one namespace so that the crate’s internal DDD layer tree (application::service::..., presentation::http::...) is free to move on regeneration without breaking consumers.

Consumers should depend only on backbone_pos::integration::{...}. The deep paths are internal; reaching into them couples you to the layer structure (council 2026-07-26, Contract Seat — docs/council/2026-07-26-module-backbone-pos-maturity.md).

§Stability promise

  • Additive changes (new re-exports, new items) are non-breaking.
  • Removals or renames of items already exported here require a semver bump.
  • The internals behind these aliases are NOT promised stable — they may change anytime.

§What a consumer wires

ⓘ
use backbone_pos::integration::*;

let pos = PosModule::builder().with_database(pool.clone()).build()?;
// implement the outbound ports over your real tax/billing/payment/inventory
let tax: Arc<dyn PosTaxComputePort> = /* your adapter over the tax module */;
let billing: Arc<dyn BillingPort> = /* your adapter */;
let payment: Arc<dyn PaymentPort> = /* your adapter */;
let variance: Arc<dyn PosCashVariancePort> = /* your adapter over accounting */;
let inventory: Option<Arc<dyn InventoryPort>> = /* your adapter */;
// subscribe to tenders → drive recognition exactly once
let sink = RecognitionSink::new(pool.clone(), billing, payment, inventory);
// mount the guarded surface — bare of auth; wrap it in YOUR org scope middleware
// (org_auth + the tenant router) so the request-dedicated connection fences it
let router = create_guarded_pos_routes_with_outbox(
    &pos, pool, sink, tax, variance, billing, payment, schema,
);

Re-exports§

pub use crate::PosModule;
pub use crate::PosModuleBuilder;
pub use crate::presentation::http::create_guarded_pos_routes;
pub use crate::presentation::http::create_guarded_pos_routes_with_outbox;
pub use crate::presentation::http::create_guarded_pos_priced_route;
pub use crate::presentation::http::create_guarded_pos_priced_route_with_outbox;
pub use crate::application::service::BillingPort;
pub use crate::application::service::PaymentPort;
pub use crate::application::service::PosRejected;
pub use crate::application::service::SaleInvoiceRequest;
pub use crate::application::service::SaleLine;
pub use crate::application::service::InvoiceAck;
pub use crate::application::service::CreditNoteRequest;
pub use crate::application::service::ReversalAck;
pub use crate::application::service::SettlementRequest;
pub use crate::application::service::SettlementAck;
pub use crate::application::service::RefundRequest;
pub use crate::application::service::pos_ports::InventoryPort;
pub use crate::application::service::pos_ports::StockIssueRequest;
pub use crate::application::service::pos_ports::StockIssueAck;
pub use crate::application::service::PosTaxComputePort;
pub use crate::application::service::PosTaxComputeRequest;
pub use crate::application::service::PosTaxLineIn;
pub use crate::application::service::PosTaxDocumentType;
pub use crate::application::service::PosTaxComputeResult;
pub use crate::application::service::PosTaxComponent;
pub use crate::application::service::PosCashVariancePort;
pub use crate::application::service::CashVarianceRequest;
pub use crate::application::service::CashVarianceAck;
pub use crate::application::service::CashVarianceDirection;
pub use crate::application::service::CartPricingPort;
pub use crate::application::service::CartPriceRequest;
pub use crate::application::service::CartPriceLine;
pub use crate::application::service::CartPricingError;
pub use crate::application::service::PricedCart;
pub use crate::application::service::PricedCartLine;
pub use crate::application::service::PricedRewardLine;
pub use crate::application::service::PosWriteService;
pub use crate::application::service::NewSession;
pub use crate::application::service::NewSale;
pub use crate::application::service::NewSaleLine;
pub use crate::application::service::NewCartSale;
pub use crate::application::service::CartSaleLine;
pub use crate::application::service::NewClose;
pub use crate::application::service::ManagerAuth;
pub use crate::application::service::TenderOutcome;
pub use crate::application::service::RecognizeOutcome;
pub use crate::application::service::ReturnOutcome;
pub use crate::application::service::CloseOutcome;
pub use crate::application::service::MethodRecon;
pub use crate::application::service::PosError;
pub use crate::application::service::VarianceBooking;
pub use crate::application::service::PinPolicy;
pub use crate::application::service::NewSyncSale;
pub use crate::application::service::SyncSaleLine;
pub use crate::application::service::SyncTender;
pub use crate::application::service::SyncAction;
pub use crate::application::service::SyncOutcome;
pub use crate::application::service::TicketTotals;
pub use crate::application::service::pos_manager_pin::SetPin;
pub use crate::application::service::PosEvent;
pub use crate::application::service::PosEventSink;
pub use crate::application::service::LoggingSink;
pub use crate::application::service::PosInvoicePaid;
pub use crate::application::service::PosInvoiceReturned;
pub use crate::application::service::PosSessionClosed;
pub use crate::application::service::PosSessionOpened;
pub use crate::application::service::pos_events::PosTenderCompleted;

Structs§

CompanyClaims
The access-token claims a guarded surface trusts.
CompanyContext
The company + subject proven by a validated access token.
CompanyVerifier
Verifier the composing service builds once (from its JWT secret) and clones into guarded routes.
TenantClaims
The access-token claims a guarded surface trusts.
TenantContext
The company + subject proven by a validated access token.
TenantVerifier
Verifier the composing service builds once (from its JWT secret) and clones into guarded routes.

Functions§

company_auth
Middleware: validate the Bearer token and insert a CompanyContext; reject with 401 otherwise.
tenant_auth
Middleware: validate the Bearer token and insert a CompanyContext; reject with 401 otherwise.