#[non_exhaustive]pub struct ModuleManifest {Show 16 fields
pub protocol: String,
pub module_id: String,
pub summary: Option<String>,
pub story_display: Vec<StoryDisplayDescriptor>,
pub admin: Option<AdminSurface>,
pub http_routes: Vec<ModuleHttpRoute>,
pub runtime: Option<RuntimeSurface>,
pub events: Option<EventSurface>,
pub lifecycle: Option<LifecycleSurface>,
pub console: Vec<ConsoleSurface>,
pub console_slots: Vec<ConsoleSlot>,
pub console_contributions: Vec<ConsoleContribution>,
pub capabilities: Vec<String>,
pub requires: Vec<ModuleRequirement>,
pub config: ModuleConfigContract,
pub migrations: Vec<ModuleMigrationDeclaration>,
}Expand description
The serializable metadata a module exposes. Runtime config is deliberately
NOT here — it stays an internal &'static field on [crate::Module]
because the config registry needs the real (non-serde) RuntimeConfigType
to validate. Only round-trippable fields belong here.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.protocol: String§module_id: StringStable fully qualified ModuleId, e.g. "lenso/identity".
summary: Option<String>§story_display: Vec<StoryDisplayDescriptor>Console story-display metadata.
admin: Option<AdminSurface>Admin surface: Some(AdminSurface::Schema(_)) for schema-driven CRUD,
future custom surfaces for richer module admin UI, or None for modules
with no admin surface (e.g. notifications).
http_routes: Vec<ModuleHttpRoute>Declared module-owned HTTP routes. These are metadata only until a loading-source-specific mount/proxy protocol exists.
runtime: Option<RuntimeSurface>Declared runtime behavior. These entries are manifest data only; source bindings decide how to register executable behavior.
events: Option<EventSurface>Declared event subscriptions. These entries are manifest data only; source bindings decide how to register executable behavior.
lifecycle: Option<LifecycleSurface>Declared lifecycle work. The host validates and schedules these entries; modules do not receive arbitrary startup callbacks.
console: Vec<ConsoleSurface>Declared Runtime Console surfaces provided by trusted frontend packages.
console_slots: Vec<ConsoleSlot>Declared Runtime Console extension slots owned by host or module surfaces.
console_contributions: Vec<ConsoleContribution>Declared Runtime Console slot contributions attached to host or module-owned surfaces.
capabilities: Vec<String>RESERVED SEAM — capabilities the module declares (perms/tenancy).
requires: Vec<ModuleRequirement>Other Modules required by this business capability.
config: ModuleConfigContract§migrations: Vec<ModuleMigrationDeclaration>Implementations§
Source§impl ModuleManifest
impl ModuleManifest
Sourcepub fn builder(module_id: impl Into<String>) -> ModuleManifestBuilder
pub fn builder(module_id: impl Into<String>) -> ModuleManifestBuilder
Start building a manifest for a fully qualified ModuleId.
Trait Implementations§
Source§impl Clone for ModuleManifest
impl Clone for ModuleManifest
Source§fn clone(&self) -> ModuleManifest
fn clone(&self) -> ModuleManifest
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 ModuleManifest
impl Debug for ModuleManifest
Source§impl<'de> Deserialize<'de> for ModuleManifest
impl<'de> Deserialize<'de> for ModuleManifest
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ModuleManifest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ModuleManifest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for ModuleManifest
Source§impl JsonSchema for ModuleManifest
impl JsonSchema for ModuleManifest
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for ModuleManifest
impl PartialEq for ModuleManifest
Source§impl Serialize for ModuleManifest
impl Serialize for ModuleManifest
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ModuleManifest
Auto Trait Implementations§
impl Freeze for ModuleManifest
impl RefUnwindSafe for ModuleManifest
impl Send for ModuleManifest
impl Sync for ModuleManifest
impl Unpin for ModuleManifest
impl UnsafeUnpin for ModuleManifest
impl UnwindSafe for ModuleManifest
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request