Skip to main content
Glama
schema.rs2.09 kB
use derive_builder::Builder; use serde::{ Deserialize, Serialize, }; use super::{ SchemaVariantSpec, SpecError, }; #[derive(Builder, Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[builder(build_fn(error = "SpecError"))] pub struct SchemaSpecData { #[builder(setter(into))] pub name: String, #[builder(setter(into))] pub category: String, #[builder(setter(into, strip_option), default)] pub category_name: Option<String>, #[builder(setter(into), default)] pub ui_hidden: bool, #[builder(setter(into, strip_option), default)] pub default_schema_variant: Option<String>, } impl SchemaSpecData { #[must_use] pub fn builder() -> SchemaSpecDataBuilder { SchemaSpecDataBuilder::default() } pub fn anonymize(&mut self) { self.default_schema_variant = None; } } #[derive(Builder, Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[builder(build_fn(error = "SpecError"))] pub struct SchemaSpec { #[builder(setter(into))] pub name: String, #[builder(setter(into, strip_option), default)] pub data: Option<SchemaSpecData>, #[builder(setter(into, strip_option), default)] #[serde(default)] pub unique_id: Option<String>, #[builder(setter(into), default)] #[serde(default)] pub deleted: bool, #[builder(setter(into), default)] #[serde(default)] pub is_builtin: bool, #[builder(setter(each(name = "variant", into)), default)] pub variants: Vec<SchemaVariantSpec>, } impl SchemaSpec { #[must_use] pub fn builder() -> SchemaSpecBuilder { SchemaSpecBuilder::default() } pub fn anonymize(&mut self) { self.unique_id = None; if let Some(ref mut data) = self.data { data.anonymize(); } self.variants.iter_mut().for_each(|f| f.anonymize()); } } impl TryFrom<SchemaSpecBuilder> for SchemaSpec { type Error = SpecError; fn try_from(value: SchemaSpecBuilder) -> Result<Self, Self::Error> { value.build() } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server