diff --git a/atrium-api/README.md b/atrium-api/README.md index 378c24fb..ce0c7adf 100644 --- a/atrium-api/README.md +++ b/atrium-api/README.md @@ -29,6 +29,7 @@ async fn main() -> Result<(), Box> { auth_factor_token: None, identifier: "alice@mail.com".into(), password: "hunter2".into(), + allow_takendown: None, } .into(), ) diff --git a/atrium-api/src/agent.rs b/atrium-api/src/agent.rs index c61296a7..eb97b17e 100644 --- a/atrium-api/src/agent.rs +++ b/atrium-api/src/agent.rs @@ -74,6 +74,7 @@ where auth_factor_token: None, identifier: identifier.as_ref().into(), password: password.as_ref().into(), + allow_takendown: None, } .into(), ) diff --git a/atrium-api/src/app/bsky/actor/get_suggestions.rs b/atrium-api/src/app/bsky/actor/get_suggestions.rs index 529b4417..2c4f3dc3 100644 --- a/atrium-api/src/app/bsky/actor/get_suggestions.rs +++ b/atrium-api/src/app/bsky/actor/get_suggestions.rs @@ -16,6 +16,9 @@ pub struct OutputData { pub actors: Vec, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub cursor: core::option::Option, + ///Snowflake for this recommendation, use when submitting recommendation events. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub rec_id: core::option::Option, } pub type Output = crate::types::Object; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] diff --git a/atrium-api/src/app/bsky/feed/defs.rs b/atrium-api/src/app/bsky/feed/defs.rs index 976f53fd..c2641923 100644 --- a/atrium-api/src/app/bsky/feed/defs.rs +++ b/atrium-api/src/app/bsky/feed/defs.rs @@ -24,6 +24,10 @@ pub const CLICKTHROUGH_EMBED: &str = "app.bsky.feed.defs#clickthroughEmbed"; pub const CLICKTHROUGH_ITEM: &str = "app.bsky.feed.defs#clickthroughItem"; ///User clicked through to the reposter of the feed item pub const CLICKTHROUGH_REPOSTER: &str = "app.bsky.feed.defs#clickthroughReposter"; +///Declares the feed generator returns any types of posts. +pub const CONTENT_MODE_UNSPECIFIED: &str = "app.bsky.feed.defs#contentModeUnspecified"; +///Declares the feed generator returns posts containing app.bsky.embed.video embeds. +pub const CONTENT_MODE_VIDEO: &str = "app.bsky.feed.defs#contentModeVideo"; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct FeedViewPostData { @@ -45,6 +49,8 @@ pub struct GeneratorViewData { #[serde(skip_serializing_if = "core::option::Option::is_none")] pub avatar: core::option::Option, pub cid: crate::types::string::Cid, + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub content_mode: core::option::Option, pub creator: crate::app::bsky::actor::defs::ProfileView, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub description: core::option::Option, diff --git a/atrium-api/src/app/bsky/feed/generator.rs b/atrium-api/src/app/bsky/feed/generator.rs index 5f47d96b..73f991b2 100644 --- a/atrium-api/src/app/bsky/feed/generator.rs +++ b/atrium-api/src/app/bsky/feed/generator.rs @@ -8,6 +8,8 @@ pub struct RecordData { pub accepts_interactions: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub avatar: core::option::Option, + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub content_mode: core::option::Option, pub created_at: crate::types::string::Datetime, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub description: core::option::Option, diff --git a/atrium-api/src/app/bsky/graph/get_suggested_follows_by_actor.rs b/atrium-api/src/app/bsky/graph/get_suggested_follows_by_actor.rs index b01b44d8..dadbbb7e 100644 --- a/atrium-api/src/app/bsky/graph/get_suggested_follows_by_actor.rs +++ b/atrium-api/src/app/bsky/graph/get_suggested_follows_by_actor.rs @@ -13,6 +13,9 @@ pub struct OutputData { ///If true, response has fallen-back to generic results, and is not scoped using relativeToDid #[serde(skip_serializing_if = "core::option::Option::is_none")] pub is_fallback: core::option::Option, + ///Snowflake for this recommendation, use when submitting recommendation events. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub rec_id: core::option::Option, pub suggestions: Vec, } pub type Output = crate::types::Object; diff --git a/atrium-api/src/app/bsky/notification/list_notifications.rs b/atrium-api/src/app/bsky/notification/list_notifications.rs index 5a59d48d..c12cb6f3 100644 --- a/atrium-api/src/app/bsky/notification/list_notifications.rs +++ b/atrium-api/src/app/bsky/notification/list_notifications.rs @@ -10,6 +10,9 @@ pub struct ParametersData { pub limit: core::option::Option>, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub priority: core::option::Option, + ///Notification reasons to include in response. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub reasons: core::option::Option>, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub seen_at: core::option::Option, } diff --git a/atrium-api/src/app/bsky/unspecced.rs b/atrium-api/src/app/bsky/unspecced.rs index ea7d9dbc..ce03460e 100644 --- a/atrium-api/src/app/bsky/unspecced.rs +++ b/atrium-api/src/app/bsky/unspecced.rs @@ -5,6 +5,7 @@ pub mod get_config; pub mod get_popular_feed_generators; pub mod get_suggestions_skeleton; pub mod get_tagged_suggestions; +pub mod get_trending_topics; pub mod search_actors_skeleton; pub mod search_posts_skeleton; pub mod search_starter_packs_skeleton; diff --git a/atrium-api/src/app/bsky/unspecced/defs.rs b/atrium-api/src/app/bsky/unspecced/defs.rs index 5b8a47c3..d54d9832 100644 --- a/atrium-api/src/app/bsky/unspecced/defs.rs +++ b/atrium-api/src/app/bsky/unspecced/defs.rs @@ -18,3 +18,14 @@ pub struct SkeletonSearchStarterPackData { pub uri: String, } pub type SkeletonSearchStarterPack = crate::types::Object; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct TrendingTopicData { + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub description: core::option::Option, + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub display_name: core::option::Option, + pub link: String, + pub topic: String, +} +pub type TrendingTopic = crate::types::Object; diff --git a/atrium-api/src/app/bsky/unspecced/get_suggestions_skeleton.rs b/atrium-api/src/app/bsky/unspecced/get_suggestions_skeleton.rs index e8ca2d9e..b0d97306 100644 --- a/atrium-api/src/app/bsky/unspecced/get_suggestions_skeleton.rs +++ b/atrium-api/src/app/bsky/unspecced/get_suggestions_skeleton.rs @@ -22,6 +22,9 @@ pub struct OutputData { pub actors: Vec, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub cursor: core::option::Option, + ///Snowflake for this recommendation, use when submitting recommendation events. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub rec_id: core::option::Option, ///DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub relative_to_did: core::option::Option, diff --git a/atrium-api/src/app/bsky/unspecced/get_trending_topics.rs b/atrium-api/src/app/bsky/unspecced/get_trending_topics.rs new file mode 100644 index 00000000..3f74730a --- /dev/null +++ b/atrium-api/src/app/bsky/unspecced/get_trending_topics.rs @@ -0,0 +1,28 @@ +// @generated - This file is generated by atrium-codegen. DO NOT EDIT. +//!Definitions for the `app.bsky.unspecced.getTrendingTopics` namespace. +pub const NSID: &str = "app.bsky.unspecced.getTrendingTopics"; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct ParametersData { + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub limit: core::option::Option>, + ///DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub viewer: core::option::Option, +} +pub type Parameters = crate::types::Object; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct OutputData { + pub suggested: Vec, + pub topics: Vec, +} +pub type Output = crate::types::Object; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(tag = "error", content = "message")] +pub enum Error {} +impl std::fmt::Display for Error { + fn fmt(&self, _f: &mut std::fmt::Formatter) -> std::fmt::Result { + Ok(()) + } +} diff --git a/atrium-api/src/client.rs b/atrium-api/src/client.rs index a865bef2..c431e93f 100644 --- a/atrium-api/src/client.rs +++ b/atrium-api/src/client.rs @@ -2139,6 +2139,36 @@ where _ => Err(atrium_xrpc::Error::UnexpectedResponseType), } } + ///Get a list of trending topics + pub async fn get_trending_topics( + &self, + params: crate::app::bsky::unspecced::get_trending_topics::Parameters, + ) -> atrium_xrpc::Result< + crate::app::bsky::unspecced::get_trending_topics::Output, + crate::app::bsky::unspecced::get_trending_topics::Error, + > { + let response = self + .xrpc + .send_xrpc::< + _, + (), + _, + _, + >( + &atrium_xrpc::XrpcRequest { + method: http::Method::GET, + nsid: crate::app::bsky::unspecced::get_trending_topics::NSID.into(), + parameters: Some(params), + input: None, + encoding: None, + }, + ) + .await?; + match response { + atrium_xrpc::OutputDataOrBytes::Data(data) => Ok(data), + _ => Err(atrium_xrpc::Error::UnexpectedResponseType), + } + } ///Backend Actors (profile) search, returns only skeleton. pub async fn search_actors_skeleton( &self, @@ -5045,6 +5075,36 @@ where _phantom: core::marker::PhantomData, } } + ///Add a handle to the set of reserved handles. + pub async fn add_reserved_handle( + &self, + input: crate::com::atproto::temp::add_reserved_handle::Input, + ) -> atrium_xrpc::Result< + crate::com::atproto::temp::add_reserved_handle::Output, + crate::com::atproto::temp::add_reserved_handle::Error, + > { + let response = self + .xrpc + .send_xrpc::< + (), + _, + _, + _, + >( + &atrium_xrpc::XrpcRequest { + method: http::Method::POST, + nsid: crate::com::atproto::temp::add_reserved_handle::NSID.into(), + parameters: None, + input: Some(atrium_xrpc::InputDataOrBytes::Data(input)), + encoding: Some(String::from("application/json")), + }, + ) + .await?; + match response { + atrium_xrpc::OutputDataOrBytes::Data(data) => Ok(data), + _ => Err(atrium_xrpc::Error::UnexpectedResponseType), + } + } ///Check accounts location in signup queue. pub async fn check_signup_queue( &self, diff --git a/atrium-api/src/com/atproto.rs b/atrium-api/src/com/atproto.rs index 124bded5..c4ae320f 100644 --- a/atrium-api/src/com/atproto.rs +++ b/atrium-api/src/com/atproto.rs @@ -3,6 +3,7 @@ pub mod admin; pub mod identity; pub mod label; +pub mod lexicon; pub mod moderation; pub mod repo; pub mod server; diff --git a/atrium-api/src/com/atproto/lexicon.rs b/atrium-api/src/com/atproto/lexicon.rs new file mode 100644 index 00000000..17b07979 --- /dev/null +++ b/atrium-api/src/com/atproto/lexicon.rs @@ -0,0 +1,9 @@ +// @generated - This file is generated by atrium-codegen. DO NOT EDIT. +//!Definitions for the `com.atproto.lexicon` namespace. +pub mod schema; +#[derive(Debug)] +pub struct Schema; +impl crate::types::Collection for Schema { + const NSID: &'static str = "com.atproto.lexicon.schema"; + type Record = schema::Record; +} diff --git a/atrium-api/src/com/atproto/lexicon/schema.rs b/atrium-api/src/com/atproto/lexicon/schema.rs new file mode 100644 index 00000000..1a14e126 --- /dev/null +++ b/atrium-api/src/com/atproto/lexicon/schema.rs @@ -0,0 +1,9 @@ +// @generated - This file is generated by atrium-codegen. DO NOT EDIT. +//!Definitions for the `com.atproto.lexicon.schema` namespace. +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct RecordData { + ///Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system. + pub lexicon: i64, +} +pub type Record = crate::types::Object; diff --git a/atrium-api/src/com/atproto/server/create_session.rs b/atrium-api/src/com/atproto/server/create_session.rs index c3848634..c3e053c2 100644 --- a/atrium-api/src/com/atproto/server/create_session.rs +++ b/atrium-api/src/com/atproto/server/create_session.rs @@ -4,6 +4,9 @@ pub const NSID: &str = "com.atproto.server.createSession"; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct InputData { + ///When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub allow_takendown: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub auth_factor_token: core::option::Option, ///Handle or other identifier supported by the server for the authenticating user. diff --git a/atrium-api/src/com/atproto/temp.rs b/atrium-api/src/com/atproto/temp.rs index 79c9dbc7..990991c5 100644 --- a/atrium-api/src/com/atproto/temp.rs +++ b/atrium-api/src/com/atproto/temp.rs @@ -1,5 +1,6 @@ // @generated - This file is generated by atrium-codegen. DO NOT EDIT. //!Definitions for the `com.atproto.temp` namespace. +pub mod add_reserved_handle; pub mod check_signup_queue; pub mod fetch_labels; pub mod request_phone_verification; diff --git a/atrium-api/src/com/atproto/temp/add_reserved_handle.rs b/atrium-api/src/com/atproto/temp/add_reserved_handle.rs new file mode 100644 index 00000000..4b6c1ba9 --- /dev/null +++ b/atrium-api/src/com/atproto/temp/add_reserved_handle.rs @@ -0,0 +1,21 @@ +// @generated - This file is generated by atrium-codegen. DO NOT EDIT. +//!Definitions for the `com.atproto.temp.addReservedHandle` namespace. +pub const NSID: &str = "com.atproto.temp.addReservedHandle"; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct InputData { + pub handle: String, +} +pub type Input = crate::types::Object; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct OutputData {} +pub type Output = crate::types::Object; +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(tag = "error", content = "message")] +pub enum Error {} +impl std::fmt::Display for Error { + fn fmt(&self, _f: &mut std::fmt::Formatter) -> std::fmt::Result { + Ok(()) + } +} diff --git a/atrium-api/src/record.rs b/atrium-api/src/record.rs index 31e28d4b..37e6f2f6 100644 --- a/atrium-api/src/record.rs +++ b/atrium-api/src/record.rs @@ -63,6 +63,8 @@ pub enum KnownRecord { #[cfg(feature = "namespace-chatbsky")] #[serde(rename = "chat.bsky.actor.declaration")] ChatBskyActorDeclaration(Box), + #[serde(rename = "com.atproto.lexicon.schema")] + ComAtprotoLexiconSchema(Box), } #[cfg_attr(docsrs, doc(cfg(feature = "namespace-appbsky")))] #[cfg(feature = "namespace-appbsky")] @@ -274,3 +276,13 @@ impl From for KnownRecord { KnownRecord::ChatBskyActorDeclaration(Box::new(record_data.into())) } } +impl From for KnownRecord { + fn from(record: crate::com::atproto::lexicon::schema::Record) -> Self { + KnownRecord::ComAtprotoLexiconSchema(Box::new(record)) + } +} +impl From for KnownRecord { + fn from(record_data: crate::com::atproto::lexicon::schema::RecordData) -> Self { + KnownRecord::ComAtprotoLexiconSchema(Box::new(record_data.into())) + } +} diff --git a/atrium-api/src/tools/ozone/moderation/defs.rs b/atrium-api/src/tools/ozone/moderation/defs.rs index 92923fbb..0c3e366a 100644 --- a/atrium-api/src/tools/ozone/moderation/defs.rs +++ b/atrium-api/src/tools/ozone/moderation/defs.rs @@ -29,6 +29,27 @@ pub struct AccountHostingData { pub updated_at: core::option::Option, } pub type AccountHosting = crate::types::Object; +///Statistics about a particular account subject +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct AccountStatsData { + ///Total number of appeals against a moderation action on the account + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub appeal_count: core::option::Option, + ///Number of times the account was escalated + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub escalate_count: core::option::Option, + ///Total number of reports on the account + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub report_count: core::option::Option, + ///Number of times the account was suspended + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub suspend_count: core::option::Option, + ///Number of times the account was taken down + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub takedown_count: core::option::Option, +} +pub type AccountStats = crate::types::Object; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct BlobViewData { @@ -67,6 +88,9 @@ pub type ImageDetails = crate::types::Object; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct ModEventAcknowledgeData { + ///If true, all other reports on content authored by this account will be resolved (acknowledged). + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub acknowledge_account_subjects: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub comment: core::option::Option, } @@ -196,6 +220,9 @@ pub struct ModEventTakedownData { ///Indicates how long the takedown should be in effect before automatically expiring. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub duration_in_hours: core::option::Option, + ///Names/Keywords of the policies that drove the decision. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub policies: core::option::Option>, } pub type ModEventTakedown = crate::types::Object; ///Unmute action on a subject @@ -312,6 +339,36 @@ pub struct RecordViewNotFoundData { pub uri: String, } pub type RecordViewNotFound = crate::types::Object; +///Statistics about a set of record subject items +#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct RecordsStatsData { + ///Number of items that were appealed at least once + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub appealed_count: core::option::Option, + ///Number of items that were escalated at least once + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub escalated_count: core::option::Option, + ///Number of item currently in "reviewOpen" or "reviewEscalated" state + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub pending_count: core::option::Option, + ///Number of item currently in "reviewNone" or "reviewClosed" state + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub processed_count: core::option::Option, + ///Number of items that were reported at least once + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub reported_count: core::option::Option, + ///Total number of item in the set + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub subject_count: core::option::Option, + ///Number of item currently taken down + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub takendown_count: core::option::Option, + ///Cumulative sum of the number of reports on the items in the set + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub total_reports: core::option::Option, +} +pub type RecordsStats = crate::types::Object; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct RepoViewData { @@ -386,6 +443,9 @@ pub type SubjectReviewState = String; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct SubjectStatusViewData { + ///Statistics related to the account subject + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub account_stats: core::option::Option, ///True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub appealed: core::option::Option, @@ -410,6 +470,9 @@ pub struct SubjectStatusViewData { pub mute_reporting_until: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub mute_until: core::option::Option, + ///Statistics related to the record subjects authored by the subject's account + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub records_stats: core::option::Option, pub review_state: SubjectReviewState, pub subject: crate::types::Union, #[serde(skip_serializing_if = "core::option::Option::is_none")] diff --git a/atrium-api/src/tools/ozone/moderation/query_events.rs b/atrium-api/src/tools/ozone/moderation/query_events.rs index e66fa1c0..f050c5c6 100644 --- a/atrium-api/src/tools/ozone/moderation/query_events.rs +++ b/atrium-api/src/tools/ozone/moderation/query_events.rs @@ -13,7 +13,7 @@ pub struct ParametersData { ///If specified, only events where the subject belongs to the given collections will be returned. When subjectType is set to 'account', this will be ignored. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub collections: core::option::Option>, - ///If specified, only events with comments containing the keyword are returned + ///If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub comment: core::option::Option, ///Retrieve events created after a given timestamp @@ -34,6 +34,8 @@ pub struct ParametersData { pub include_all_user_records: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub limit: core::option::Option>, + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub policies: core::option::Option>, ///If specified, only events where all of these labels were removed are returned #[serde(skip_serializing_if = "core::option::Option::is_none")] pub removed_labels: core::option::Option>, diff --git a/atrium-api/src/tools/ozone/moderation/query_statuses.rs b/atrium-api/src/tools/ozone/moderation/query_statuses.rs index b5a32be4..5daae8e1 100644 --- a/atrium-api/src/tools/ozone/moderation/query_statuses.rs +++ b/atrium-api/src/tools/ozone/moderation/query_statuses.rs @@ -45,9 +45,27 @@ pub struct ParametersData { pub last_reviewed_by: core::option::Option, #[serde(skip_serializing_if = "core::option::Option::is_none")] pub limit: core::option::Option>, + ///If specified, only subjects that belong to an account that has at least this many suspensions will be returned. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub min_account_suspend_count: core::option::Option, + ///If specified, only subjects that belong to an account that has at least this many reported records will be returned. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub min_reported_records_count: core::option::Option, + ///If specified, only subjects that belong to an account that has at least this many taken down records will be returned. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub min_takendown_records_count: core::option::Option, ///When set to true, only muted subjects and reporters will be returned. #[serde(skip_serializing_if = "core::option::Option::is_none")] pub only_muted: core::option::Option, + ///Number of queues being used by moderators. Subjects will be split among all queues. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub queue_count: core::option::Option, + ///Index of the queue to fetch subjects from. Works only when queueCount value is specified. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub queue_index: core::option::Option, + ///A seeder to shuffle/balance the queue items. + #[serde(skip_serializing_if = "core::option::Option::is_none")] + pub queue_seed: core::option::Option, ///Search subjects reported after a given timestamp #[serde(skip_serializing_if = "core::option::Option::is_none")] pub reported_after: core::option::Option, diff --git a/bsky-cli/src/runner.rs b/bsky-cli/src/runner.rs index 2f93406d..a3dba8e9 100644 --- a/bsky-cli/src/runner.rs +++ b/bsky-cli/src/runner.rs @@ -292,6 +292,7 @@ impl Runner { limit: Some(limit), priority: None, seen_at: None, + reasons: None, } .into(), ) diff --git a/bsky-sdk/src/record.rs b/bsky-sdk/src/record.rs index 1a3cac92..26616894 100644 --- a/bsky-sdk/src/record.rs +++ b/bsky-sdk/src/record.rs @@ -194,6 +194,11 @@ macro_rules! record_impl { }; } +record_impl!( + atrium_api::com::atproto::lexicon::Schema, + atrium_api::com::atproto::lexicon::schema::Record, + atrium_api::com::atproto::lexicon::schema::RecordData +); record_impl!( atrium_api::app::bsky::actor::Profile, atrium_api::app::bsky::actor::profile::Record, diff --git a/bsky-sdk/src/record/agent.rs b/bsky-sdk/src/record/agent.rs index 30a2f626..b8a39ca0 100644 --- a/bsky-sdk/src/record/agent.rs +++ b/bsky-sdk/src/record/agent.rs @@ -50,6 +50,7 @@ where KnownRecord::AppBskyGraphStarterpack(record) => record.data.create(self).await, KnownRecord::AppBskyLabelerService(record) => record.data.create(self).await, KnownRecord::ChatBskyActorDeclaration(record) => record.data.create(self).await, + KnownRecord::ComAtprotoLexiconSchema(record) => record.data.create(self).await, } } /// Delete a record with AT URI.