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§
- Company
Claims - The access-token claims a guarded surface trusts.
- Company
Context - The company + subject proven by a validated access token.
- Company
Verifier - Verifier the composing service builds once (from its JWT secret) and clones into guarded routes.
- Tenant
Claims - The access-token claims a guarded surface trusts.
- Tenant
Context - The company + subject proven by a validated access token.
- Tenant
Verifier - 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.