pub struct MethodSchema {Show 14 fields
pub name: String,
pub description: String,
pub hash: String,
pub params: Option<Schema>,
pub returns: Option<Schema>,
pub streaming: bool,
pub bidirectional: bool,
pub http_method: HttpMethod,
pub request_type: Option<Schema>,
pub response_type: Option<Schema>,
pub role: MethodRole,
pub deprecation: Option<DeprecationInfo>,
pub return_shape: Option<ReturnShape>,
pub params_meta: Vec<ParamSchema>,
}Expand description
Schema for a single method exposed by a plugin
Fields§
§name: StringMethod name (e.g., “echo”, “check”)
description: StringHuman-readable description of what this method does
hash: StringContent hash of the method definition (for cache invalidation) Generated by hashing the method signature within hub-macro
params: Option<Schema>JSON Schema for the method’s parameters (None if no params)
returns: Option<Schema>JSON Schema for the method’s return type (None if not specified)
streaming: boolWhether this method streams multiple events (true) or returns a single result (false)
streaming: true→ returnsAsyncGenerator<T>(multiple events)streaming: false→ returnsPromise<T>(single event, collected)
All methods use the same streaming protocol under the hood, but this flag tells clients how to present the result.
bidirectional: boolWhether this method supports bidirectional communication
When true, the server can send requests to the client during method execution and wait for responses (e.g., confirmations, prompts, selections).
http_method: HttpMethodHTTP method for REST endpoints (GET, POST, PUT, DELETE, PATCH)
This field is used by the HTTP gateway to determine which HTTP method to use when exposing this method as a REST endpoint. Defaults to POST for backward compatibility.
- GET: Idempotent read operations (no side effects)
- POST: Create operations or non-idempotent actions (default)
- PUT: Replace/update operations (idempotent)
- DELETE: Remove operations (idempotent)
- PATCH: Partial update operations
request_type: Option<Schema>JSON Schema for the request type sent from server to client
Only relevant when bidirectional: true. Describes the structure of
requests the server may send during method execution.
response_type: Option<Schema>JSON Schema for the response type sent from client to server
Only relevant when bidirectional: true. Describes the structure of
responses the client should send in reply to server requests.
role: MethodRoleHow this method participates in the activation graph.
Added in IR-2. Defaults to MethodRole::Rpc via #[serde(default)]
so pre-IR schemas deserialize cleanly.
Populated by the #[plexus::method] / #[child] macros (IR-3).
deprecation: Option<DeprecationInfo>If set, this method is deprecated.
Added in IR-2. Defaults to None via #[serde(default)] so pre-IR
schemas deserialize cleanly.
Populated by the #[deprecated(...)] attribute on the underlying
method (IR-5).
return_shape: Option<ReturnShape>Structural shape of the method’s return type (e.g., Option, Vec,
Stream).
Orthogonal to returns, which holds the fine-grained JSON Schema of
the inner type. Added in IR-2 as an optional, additive field. None
means “not populated” (the wire format supports pre-IR schemas that
omit this field entirely).
params_meta: Vec<ParamSchema>Per-parameter metadata (currently just deprecation).
Added in IR-5. Defaults to an empty vec via #[serde(default)] so
pre-IR schemas deserialize cleanly. Only parameters that carry
metadata appear in this list — absence means “no metadata” for that
parameter, not a bug.
Populated by the #[deprecated(...)] attribute on individual
parameters (IR-5).
Implementations§
Source§impl MethodSchema
impl MethodSchema
Sourcepub fn new(
name: impl Into<String>,
description: impl Into<String>,
hash: impl Into<String>,
) -> Self
pub fn new( name: impl Into<String>, description: impl Into<String>, hash: impl Into<String>, ) -> Self
Create a new method schema with name, description, and hash
The hash should be computed from the method definition string within the hub-macro at compile time.
Sourcepub fn with_params(self, params: Schema) -> Self
pub fn with_params(self, params: Schema) -> Self
Add parameter schema
Sourcepub fn with_returns(self, returns: Schema) -> Self
pub fn with_returns(self, returns: Schema) -> Self
Add return type schema
Sourcepub fn with_streaming(self, streaming: bool) -> Self
pub fn with_streaming(self, streaming: bool) -> Self
Set the streaming flag
true→ method streams multiple events (useAsyncGenerator<T>)false→ method returns single result (usePromise<T>)
Sourcepub fn with_http_method(self, http_method: HttpMethod) -> Self
pub fn with_http_method(self, http_method: HttpMethod) -> Self
Set the HTTP method for REST endpoints
Defaults to POST for backward compatibility.
§Guidelines
- GET: Idempotent read operations with no side effects
- POST: Create operations or non-idempotent actions
- PUT: Replace/update operations (idempotent)
- DELETE: Remove operations (idempotent)
- PATCH: Partial update operations
Sourcepub fn with_bidirectional(self, bidirectional: bool) -> Self
pub fn with_bidirectional(self, bidirectional: bool) -> Self
Set whether this method supports bidirectional communication
When true, the server can send requests to the client during method execution and wait for responses.
Sourcepub fn with_request_type(self, schema: Schema) -> Self
pub fn with_request_type(self, schema: Schema) -> Self
Set the JSON Schema for server-to-client request types
Only relevant when bidirectional: true. Use schema_for!(YourRequestType)
to generate the schema.
Sourcepub fn with_response_type(self, schema: Schema) -> Self
pub fn with_response_type(self, schema: Schema) -> Self
Set the JSON Schema for client-to-server response types
Only relevant when bidirectional: true. Use schema_for!(YourResponseType)
to generate the schema.
Sourcepub fn with_standard_bidirectional(self) -> Self
pub fn with_standard_bidirectional(self) -> Self
Configure method for standard bidirectional communication
Sets bidirectional: true and configures request/response types to use
StandardRequest and StandardResponse, which support common UI patterns
like confirmations, prompts, and selections.
Sourcepub fn with_role(self, role: MethodRole) -> Self
pub fn with_role(self, role: MethodRole) -> Self
Set this method’s role in the activation graph.
Added in IR-2. Defaults to MethodRole::Rpc.
Sourcepub fn with_deprecation(self, info: DeprecationInfo) -> Self
pub fn with_deprecation(self, info: DeprecationInfo) -> Self
Mark this method as deprecated.
Added in IR-2. Populates the deprecation field with the provided
DeprecationInfo.
Sourcepub fn with_return_shape(self, shape: ReturnShape) -> Self
pub fn with_return_shape(self, shape: ReturnShape) -> Self
Set the structural shape of this method’s return type.
Added in IR-2. Orthogonal to with_returns, which sets the fine-grained
JSON Schema.
Sourcepub fn with_params_meta(self, entries: Vec<ParamSchema>) -> Self
pub fn with_params_meta(self, entries: Vec<ParamSchema>) -> Self
Attach per-parameter metadata for this method’s parameters.
Added in IR-5. Only parameters that carry metadata (e.g. a
#[deprecated] annotation) need appear in entries; absence means
“no metadata” for a given parameter. The consumer correlates entries
against self.params by matching ParamSchema.name against the
properties map of the JSON Schema.
Trait Implementations§
Source§impl Clone for MethodSchema
impl Clone for MethodSchema
Source§fn clone(&self) -> MethodSchema
fn clone(&self) -> MethodSchema
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MethodSchema
impl Debug for MethodSchema
Source§impl<'de> Deserialize<'de> for MethodSchema
impl<'de> Deserialize<'de> for MethodSchema
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>,
Source§impl JsonSchema for MethodSchema
impl JsonSchema for MethodSchema
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 more