====== Provider Abstraction ====== [[dido:99_annexes:annex-b-terms-and-definitions:start|Go up to Terms and Definitions]] ===== Discussion ===== A Provider Abstraction defines a provider-independent representation of the capabilities, operations, inputs, outputs, errors, and lifecycle behaviors required from one or more [[dido:99_annexes:annex-b-terms-and-definitions:p:provider|Providers]]. The abstraction separates the requesting software from provider-specific interfaces, software development kits, data formats, authentication mechanisms, and operational details. A Provider Abstraction allows core functions to request capabilities through a stable architectural boundary while specialized implementations translate those requests into provider-specific operations. Within the Crucible architecture, the Provider Abstraction supports cloud agnosticism by preventing provider-specific logic from spreading into core modules. A [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_contract|Provider Contract]] formalizes the obligations of the abstraction, while a [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugin]] realizes those obligations for a particular Provider. ===== Definition ===== //provider-independent representation of the capabilities, operations, inputs, outputs, errors, and lifecycle behaviors required from one or more [[dido:99_annexes:annex-b-terms-and-definitions:p:provider|providers]]// ===== Source ===== Generalized from software architecture, abstraction-layer, portability, plugin, and service-integration usage and specialized for the Crucible architecture and operational model. ===== Note ===== A Provider Abstraction does not guarantee that every Provider offers identical capabilities. The abstraction may expose optional capabilities, capability discovery, compatibility rules, or provider-specific constraints through controlled mechanisms. A Provider Abstraction differs from a Provider Plugin. The abstraction defines the provider-independent model, while the plugin implements that model for a specific Provider. ===== Example ===== The Crucible core requests image upload and infrastructure deployment through a Provider Abstraction. Separate Provider Plugins translate those requests into Oracle Cloud Infrastructure or Amazon Web Services operations. ---- © 2026 Dido Solutions, Inc. and Jackrabbit Consulting, Inc.