pub struct BundleDeployment {Show 14 fields
pub schema: SchemaVersion,
pub deployment_id: DeploymentId,
pub env_id: EnvId,
pub bundle_id: BundleId,
pub customer_id: CustomerId,
pub status: BundleDeploymentStatus,
pub current_revisions: Vec<RevisionId>,
pub route_binding: RouteBinding,
pub revenue_share: Vec<RevenueShareEntry>,
pub revenue_policy_ref: PathBuf,
pub usage: Option<UsageMeter>,
pub created_at: DateTime<Utc>,
pub authorization_ref: PathBuf,
pub config_overrides: BTreeMap<String, BTreeMap<String, Value>>,
}Fields§
§schema: SchemaVersion§deployment_id: DeploymentId§env_id: EnvId§bundle_id: BundleId§customer_id: CustomerId§status: BundleDeploymentStatus§current_revisions: Vec<RevisionId>Subset of Environment.revisions for this deployment.
route_binding: RouteBinding§revenue_policy_ref: PathBufPath to the signed, versioned policy document.
usage: Option<UsageMeter>§created_at: DateTime<Utc>§config_overrides: BTreeMap<String, BTreeMap<String, Value>>Per-pack non-secret runtime config overrides applied at the egress
boundary (D.4). Outer key is the pack id (matches the on-disk
<bundle>/packs/<pack_id>.gtpack slug and the pack_id carried on
synthesized HTTP routes); inner key is the provider config field
(api_base_url, default_chat_id, …). Values flow through
messaging_egress::build_send_payload → SendPayloadInV1.config
→ the WASM provider’s load_config(input.get("config")) path.
Secrets MUST NOT land here — they go through SecretsManager via
the secrets://<env>/<tenant>/<team>/<pack>/<key> URI scheme
resolved by the secrets-store host import (B12a). The non-secret/
secret split is the producer’s responsibility (deployer CLI rejects
secret-marked keys); validation here is the structural cap only.
Caps: see MAX_CONFIG_OVERRIDE_PACKS,
MAX_CONFIG_OVERRIDE_KEYS_PER_PACK,
MAX_CONFIG_OVERRIDE_BYTES.
Implementations§
Source§impl BundleDeployment
impl BundleDeployment
pub fn schema_str() -> &'static str
Sourcepub fn validate(&self) -> Result<(), SpecError>
pub fn validate(&self) -> Result<(), SpecError>
§5.4: schema discriminator equals greentic.bundle-deployment.v1
and the sum of revenue-share basis points MUST equal 10,000.
Sum widens into u64 and rejects any per-entry value above 10,000 so a
crafted document like [u32::MAX, 10001] cannot wrap to exactly 10,000
in release builds.
Trait Implementations§
Source§impl Clone for BundleDeployment
impl Clone for BundleDeployment
Source§fn clone(&self) -> BundleDeployment
fn clone(&self) -> BundleDeployment
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BundleDeployment
impl Debug for BundleDeployment
Source§impl<'de> Deserialize<'de> for BundleDeployment
impl<'de> Deserialize<'de> for BundleDeployment
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for BundleDeployment
Source§impl PartialEq for BundleDeployment
impl PartialEq for BundleDeployment
Source§fn eq(&self, other: &BundleDeployment) -> bool
fn eq(&self, other: &BundleDeployment) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for BundleDeployment
impl Serialize for BundleDeployment
impl StructuralPartialEq for BundleDeployment
Auto Trait Implementations§
impl Freeze for BundleDeployment
impl RefUnwindSafe for BundleDeployment
impl Send for BundleDeployment
impl Sync for BundleDeployment
impl Unpin for BundleDeployment
impl UnsafeUnpin for BundleDeployment
impl UnwindSafe for BundleDeployment
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.