systemprompt_models/oauth/
protected_resource.rs1use serde::{Deserialize, Serialize};
13
14use crate::mcp::McpExtensionId;
15
16#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17pub struct ProtectedResourceMetadata {
18 pub resource: String,
19 #[serde(default)]
20 pub authorization_servers: Vec<String>,
21 #[serde(default)]
22 pub scopes_supported: Vec<String>,
23 #[serde(default)]
24 pub bearer_methods_supported: Vec<String>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub resource_documentation: Option<String>,
27 #[serde(default, skip_serializing_if = "Vec::is_empty")]
28 pub mcp_extensions_supported: Vec<McpExtensionId>,
29}
30
31impl ProtectedResourceMetadata {
32 #[must_use]
33 pub fn requires_enterprise_managed_auth(&self) -> bool {
34 self.mcp_extensions_supported
35 .contains(&McpExtensionId::EnterpriseManagedAuth)
36 }
37}