objectiveai_sdk/mcp/shared/
resource_contents.rs1use indexmap::IndexMap;
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
9#[schemars(rename = "mcp.shared.ResourceContents")]
10pub struct ResourceContents {
11 pub uri: String,
13 #[serde(skip_serializing_if = "Option::is_none")]
15 #[schemars(extend("omitempty" = true))]
16 #[serde(rename = "mimeType")]
17 pub mime_type: Option<String>,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 #[schemars(extend("omitempty" = true))]
21 pub _meta: Option<IndexMap<String, serde_json::Value>>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
26#[schemars(rename = "mcp.shared.TextResourceContents")]
27pub struct TextResourceContents {
28 #[serde(flatten)]
29 pub base: ResourceContents,
30 pub text: String,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
36#[schemars(rename = "mcp.shared.BlobResourceContents")]
37pub struct BlobResourceContents {
38 #[serde(flatten)]
39 pub base: ResourceContents,
40 pub blob: String,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
46#[serde(untagged)]
47#[schemars(rename = "mcp.shared.ResourceContentsUnion")]
48pub enum ResourceContentsUnion {
49 #[schemars(title = "Text")]
50 Text(TextResourceContents),
51 #[schemars(title = "Blob")]
52 Blob(BlobResourceContents),
53}