Skip to main content

greentic_deploy_spec/
lib.rs

1//! Greentic deployment object-model schemas.
2//!
3//! See `plans/next-gen-deployment.md` ยง5 for the design rationale. This crate is
4//! the single owner of the [`Environment`], [`Revision`], [`TrafficSplit`],
5//! [`BundleDeployment`], [`Credentials`], [`PackConfig`], and [`RuntimeConfig`]
6//! types. Other crates depend on it; nothing in this crate depends on
7//! operational or runtime code.
8
9#![warn(missing_debug_implementations)]
10#![forbid(unsafe_code)]
11
12pub mod adapters;
13pub mod audit;
14pub mod bundle_deployment;
15pub mod capability_slot;
16pub mod credentials;
17pub mod engine;
18pub mod environment;
19pub mod environment_runtime;
20pub mod environment_update_channel;
21pub mod error;
22pub mod ids;
23pub mod integrity;
24pub mod messaging_endpoint;
25pub mod pack_config;
26pub mod pack_list_lock;
27pub mod refs;
28pub mod remote;
29pub mod retention;
30pub mod revenue_policy;
31pub mod revision;
32pub mod runtime_config;
33pub mod traffic_split;
34pub mod version;
35
36#[cfg(feature = "schemars")]
37pub mod json_schema;
38
39pub use audit::{Actor, AuditDecision, AuditEvent, AuditResult, POLICY_LOCAL_ONLY};
40pub use bundle_deployment::{
41    BundleDeployment, BundleDeploymentStatus, RevenueShareEntry, RouteBinding, TenantSelector,
42    UsageMeter,
43};
44pub use capability_slot::{CapabilitySlot, PackDescriptor, PackDescriptorParseError};
45pub use credentials::{
46    Credentials, CredentialsBootstrap, CredentialsExpiry, CredentialsMode, CredentialsValidation,
47    CredentialsValidationResult,
48};
49pub use engine::{
50    ActiveSplitRef, AddBundlePayload, AddMessagingEndpointPayload, AddTrustedKeyPayload,
51    ApplyTrafficSplitOutcome, BindingError, BindingGenerationOutcome, BundleError,
52    BundleUpdateApplied, CreateEnvironmentPayload, EngineError, ExtensionBindingPayload,
53    ExtensionKey, ExtensionKeyedPayload, FieldUpdate, HealthCheckId, HealthGateFailure,
54    MergeReport, MessagingApplied, MessagingBundleLinkPayload, MessagingError, MigrateMergePayload,
55    MigrateSeedPayload, PackBindingPayload, RemoveBundleOutcome, RevisionLifecycleError,
56    RevisionTransition, RevisionTransitionOutcome, RollbackTrafficSplitOutcome,
57    RollbackTrafficSplitPayload, RotateWebhookSecretPayload, SetMessagingWelcomeFlowPayload,
58    SetTrafficSplitPayload, StageRevisionPayload, TrafficRollbackTransition, TrafficSplitError,
59    TrafficSplitTransition, TrustRootAddOutcome, TrustRootRemoveOutcome, TrustRootSeed,
60    UpdateBundlePayload, UpdateEnvironmentPayload, WarmRevisionPayload,
61};
62pub use environment::{
63    DEFAULT_LISTEN_ADDR, EnvPackBinding, Environment, EnvironmentHostConfig, ExtensionBinding,
64    GUI_DEFAULT_ENV_ID, validate_public_base_url,
65};
66pub use environment_runtime::{EnvironmentRuntime, RuntimeDiscoveryValue};
67pub use environment_update_channel::{
68    DEFAULT_POLL_INTERVAL_SECS, MIN_POLL_INTERVAL_SECS, OnNotifyAction, UpdateChannelConfig,
69};
70pub use error::SpecError;
71pub use ids::{
72    BundleId, CustomerId, DeploymentId, MessagingEndpointId, PackId, PartyId, RevisionId,
73};
74pub use integrity::{INTEGRITY_ALGORITHM_SHA256, IntegrityError, StateIntegrity, canonical_json};
75pub use messaging_endpoint::{MessagingEndpoint, WelcomeFlowRef};
76pub use pack_config::PackConfig;
77pub use pack_list_lock::{LockedPack, PackListLock};
78pub use refs::{
79    ExtensionRef, ExtensionRefParseError, RuntimeRef, RuntimeRefParseError, SecretRef,
80    SecretRefParseError,
81};
82pub use remote::{
83    BackupArtifact, BackupManifest, ConcurrencyConflict, IdempotencyKey, IdempotencyOutcome,
84    IdempotencyRecord, IdempotencyReplay, ImportOutcome, ImportRequest, MutationResponse,
85    Precondition, PreconditionError, RbacRequest, ReconcileCompletion, ReconcileCompletionRequest,
86    RemoteContractError, RemoteStoreError, RestoreOutcome, RestoreRequest, StateEtag,
87};
88pub use retention::{HealthState, HealthStatus, RetentionPolicy, RevocationConfig};
89pub use revenue_policy::RevenuePolicyDocument;
90pub use revision::{PackListEntry, Revision, RevisionLifecycle, is_valid_transition};
91pub use runtime_config::{RevisionRuntimeBlock, RuntimeConfig};
92pub use traffic_split::{TrafficSplit, TrafficSplitEntry};
93pub use version::{SchemaVersion, SemVer};
94
95pub use greentic_types::EnvId;