···3737 ]
3838 }
3939 },
4040+ "muteWords": {
4141+ "type": "array",
4242+ "description": "Words to filter out from chat messages. Messages containing any of these words will not be forwarded.",
4343+ "items": {
4444+ "type": "string",
4545+ "maxLength": 100
4646+ }
4747+ },
4048 "name": {
4149 "type": "string",
4250 "description": "A user-friendly name for this webhook.",
···7373 "description": "When this webhook was last triggered.",
7474 "format": "datetime"
7575 },
7676+ "muteWords": {
7777+ "type": "array",
7878+ "description": "Words to filter out from chat messages. Messages containing any of these words will not be forwarded.",
7979+ "items": {
8080+ "type": "string",
8181+ "maxLength": 100
8282+ }
8383+ },
7684 "name": {
7785 "type": "string",
7886 "description": "A user-friendly name for this webhook.",
···3939 "type": "string",
4040 "description": "The ID of the webhook to update."
4141 },
4242+ "muteWords": {
4343+ "type": "array",
4444+ "description": "Words to filter out from chat messages. Messages containing any of these words will not be forwarded.",
4545+ "items": {
4646+ "type": "string",
4747+ "maxLength": 100
4848+ }
4949+ },
4250 "name": {
4351 "type": "string",
4452 "description": "A user-friendly name for this webhook.",
···5656 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
5757}
58585959-impl<'de> jacquard_common::xrpc::XrpcRequest<'de> for GetSegments<'de> {
5959+impl<'a> jacquard_common::xrpc::XrpcRequest for GetSegments<'a> {
6060 const NSID: &'static str = "place.stream.live.getSegments";
6161 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
6262 type Response = GetSegmentsResponse;
+4
crates/jacquard-api/src/place_stream/server.rs
···6565 ///When this webhook was last triggered.
6666 #[serde(skip_serializing_if = "std::option::Option::is_none")]
6767 pub last_triggered: std::option::Option<jacquard_common::types::string::Datetime>,
6868+ ///Words to filter out from chat messages. Messages containing any of these words will not be forwarded.
6969+ #[serde(skip_serializing_if = "std::option::Option::is_none")]
7070+ #[serde(borrow)]
7171+ pub mute_words: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
6872 ///A user-friendly name for this webhook.
6973 #[serde(skip_serializing_if = "std::option::Option::is_none")]
7074 #[serde(borrow)]
···3030 ///The types of events this webhook should receive.
3131 #[serde(borrow)]
3232 pub events: Vec<jacquard_common::CowStr<'a>>,
3333+ ///Words to filter out from chat messages. Messages containing any of these words will not be forwarded.
3434+ #[serde(skip_serializing_if = "std::option::Option::is_none")]
3535+ #[serde(borrow)]
3636+ pub mute_words: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
3337 ///A user-friendly name for this webhook.
3438 #[serde(skip_serializing_if = "std::option::Option::is_none")]
3539 #[serde(borrow)]
···142146 type Err<'de> = CreateWebhookError<'de>;
143147}
144148145145-impl<'de> jacquard_common::xrpc::XrpcRequest<'de> for CreateWebhook<'de> {
149149+impl<'a> jacquard_common::xrpc::XrpcRequest for CreateWebhook<'a> {
146150 const NSID: &'static str = "place.stream.server.createWebhook";
147151 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
148152 "application/json",
···3535 #[serde(borrow)]
3636 #[builder(into)]
3737 pub id: jacquard_common::CowStr<'a>,
3838+ ///Words to filter out from chat messages. Messages containing any of these words will not be forwarded.
3939+ #[serde(skip_serializing_if = "std::option::Option::is_none")]
4040+ #[serde(borrow)]
4141+ pub mute_words: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
3842 ///A user-friendly name for this webhook.
3943 #[serde(skip_serializing_if = "std::option::Option::is_none")]
4044 #[serde(borrow)]
···158162 type Err<'de> = UpdateWebhookError<'de>;
159163}
160164161161-impl<'de> jacquard_common::xrpc::XrpcRequest<'de> for UpdateWebhook<'de> {
165165+impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateWebhook<'a> {
162166 const NSID: &'static str = "place.stream.server.updateWebhook";
163167 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
164168 "application/json",
···4040/// ```
4141pub trait VecUpdate {
4242 /// The XRPC request type for fetching the data
4343- type GetRequest<'de>: XrpcRequest<'de>;
4343+ type GetRequest: XrpcRequest;
44444545 /// The XRPC request type for putting the data back
4646- type PutRequest<'de>: XrpcRequest<'de>;
4646+ type PutRequest: XrpcRequest;
47474848 /// The item type contained in the vec (must be owned/static)
4949 type Item: IntoStatic;
50505151 /// Build the get request
5252- fn build_get<'s>() -> Self::GetRequest<'s>;
5252+ fn build_get() -> Self::GetRequest;
53535454 /// Extract the vec from the get response output
5555 fn extract_vec<'s>(
5656- output: <<Self::GetRequest<'s> as XrpcRequest<'s>>::Response as XrpcResp>::Output<'s>,
5656+ output: <<Self::GetRequest as XrpcRequest>::Response as XrpcResp>::Output<'s>,
5757 ) -> Vec<Self::Item>;
58585959 /// Build the put request from the modified vec
6060- fn build_put<'s>(items: Vec<Self::Item>) -> Self::PutRequest<'s>;
6060+ fn build_put(items: Vec<Self::Item>) -> Self::PutRequest;
61616262 /// Check if two items match (for single-item update operations)
6363 ///