jacquard_api/app_bsky/
graph.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.graph.defs
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8pub mod block;
9pub mod follow;
10pub mod get_actor_starter_packs;
11pub mod get_blocks;
12pub mod get_followers;
13pub mod get_follows;
14pub mod get_known_followers;
15pub mod get_list;
16pub mod get_list_blocks;
17pub mod get_list_mutes;
18pub mod get_lists;
19pub mod get_lists_with_membership;
20pub mod get_mutes;
21pub mod get_relationships;
22pub mod get_starter_pack;
23pub mod get_starter_packs;
24pub mod get_starter_packs_with_membership;
25pub mod get_suggested_follows_by_actor;
26pub mod list;
27pub mod listblock;
28pub mod listitem;
29pub mod mute_actor;
30pub mod mute_actor_list;
31pub mod mute_thread;
32pub mod search_starter_packs;
33pub mod starterpack;
34pub mod unmute_actor;
35pub mod unmute_actor_list;
36pub mod unmute_thread;
37pub mod verification;
38
39/// A list of actors used for curation purposes such as list feeds or interaction gating.
40#[derive(
41    serde::Serialize,
42    serde::Deserialize,
43    Debug,
44    Clone,
45    PartialEq,
46    Eq,
47    Hash,
48    jacquard_derive::IntoStatic
49)]
50pub struct Curatelist;
51impl std::fmt::Display for Curatelist {
52    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
53        write!(f, "curatelist")
54    }
55}
56
57#[jacquard_derive::lexicon]
58#[derive(
59    serde::Serialize,
60    serde::Deserialize,
61    Debug,
62    Clone,
63    PartialEq,
64    Eq,
65    jacquard_derive::IntoStatic,
66    bon::Builder
67)]
68#[serde(rename_all = "camelCase")]
69pub struct ListItemView<'a> {
70    #[serde(borrow)]
71    pub subject: crate::app_bsky::actor::ProfileView<'a>,
72    #[serde(borrow)]
73    pub uri: jacquard_common::types::string::AtUri<'a>,
74}
75
76#[derive(Debug, Clone, PartialEq, Eq, Hash)]
77pub enum ListPurpose<'a> {
78    AppBskyGraphDefsModlist,
79    AppBskyGraphDefsCuratelist,
80    AppBskyGraphDefsReferencelist,
81    Other(jacquard_common::CowStr<'a>),
82}
83
84impl<'a> ListPurpose<'a> {
85    pub fn as_str(&self) -> &str {
86        match self {
87            Self::AppBskyGraphDefsModlist => "app.bsky.graph.defs#modlist",
88            Self::AppBskyGraphDefsCuratelist => "app.bsky.graph.defs#curatelist",
89            Self::AppBskyGraphDefsReferencelist => "app.bsky.graph.defs#referencelist",
90            Self::Other(s) => s.as_ref(),
91        }
92    }
93}
94
95impl<'a> From<&'a str> for ListPurpose<'a> {
96    fn from(s: &'a str) -> Self {
97        match s {
98            "app.bsky.graph.defs#modlist" => Self::AppBskyGraphDefsModlist,
99            "app.bsky.graph.defs#curatelist" => Self::AppBskyGraphDefsCuratelist,
100            "app.bsky.graph.defs#referencelist" => Self::AppBskyGraphDefsReferencelist,
101            _ => Self::Other(jacquard_common::CowStr::from(s)),
102        }
103    }
104}
105
106impl<'a> From<String> for ListPurpose<'a> {
107    fn from(s: String) -> Self {
108        match s.as_str() {
109            "app.bsky.graph.defs#modlist" => Self::AppBskyGraphDefsModlist,
110            "app.bsky.graph.defs#curatelist" => Self::AppBskyGraphDefsCuratelist,
111            "app.bsky.graph.defs#referencelist" => Self::AppBskyGraphDefsReferencelist,
112            _ => Self::Other(jacquard_common::CowStr::from(s)),
113        }
114    }
115}
116
117impl<'a> AsRef<str> for ListPurpose<'a> {
118    fn as_ref(&self) -> &str {
119        self.as_str()
120    }
121}
122
123impl<'a> serde::Serialize for ListPurpose<'a> {
124    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
125    where
126        S: serde::Serializer,
127    {
128        serializer.serialize_str(self.as_str())
129    }
130}
131
132impl<'de, 'a> serde::Deserialize<'de> for ListPurpose<'a>
133where
134    'de: 'a,
135{
136    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
137    where
138        D: serde::Deserializer<'de>,
139    {
140        let s = <&'de str>::deserialize(deserializer)?;
141        Ok(Self::from(s))
142    }
143}
144
145impl jacquard_common::IntoStatic for ListPurpose<'_> {
146    type Output = ListPurpose<'static>;
147    fn into_static(self) -> Self::Output {
148        match self {
149            ListPurpose::AppBskyGraphDefsModlist => ListPurpose::AppBskyGraphDefsModlist,
150            ListPurpose::AppBskyGraphDefsCuratelist => {
151                ListPurpose::AppBskyGraphDefsCuratelist
152            }
153            ListPurpose::AppBskyGraphDefsReferencelist => {
154                ListPurpose::AppBskyGraphDefsReferencelist
155            }
156            ListPurpose::Other(v) => ListPurpose::Other(v.into_static()),
157        }
158    }
159}
160
161#[jacquard_derive::lexicon]
162#[derive(
163    serde::Serialize,
164    serde::Deserialize,
165    Debug,
166    Clone,
167    PartialEq,
168    Eq,
169    jacquard_derive::IntoStatic,
170    bon::Builder
171)]
172#[serde(rename_all = "camelCase")]
173pub struct ListView<'a> {
174    #[serde(skip_serializing_if = "std::option::Option::is_none")]
175    #[builder(into)]
176    #[serde(borrow)]
177    pub avatar: Option<jacquard_common::types::string::Uri<'a>>,
178    #[serde(borrow)]
179    pub cid: jacquard_common::types::string::Cid<'a>,
180    #[serde(borrow)]
181    pub creator: crate::app_bsky::actor::ProfileView<'a>,
182    #[serde(skip_serializing_if = "std::option::Option::is_none")]
183    #[builder(into)]
184    #[serde(borrow)]
185    pub description: Option<jacquard_common::CowStr<'a>>,
186    #[serde(skip_serializing_if = "std::option::Option::is_none")]
187    #[builder(into)]
188    #[serde(borrow)]
189    pub description_facets: Option<Vec<crate::app_bsky::richtext::facet::Facet<'a>>>,
190    pub indexed_at: jacquard_common::types::string::Datetime,
191    #[serde(skip_serializing_if = "std::option::Option::is_none")]
192    #[builder(into)]
193    #[serde(borrow)]
194    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
195    #[serde(skip_serializing_if = "std::option::Option::is_none")]
196    #[builder(into)]
197    pub list_item_count: Option<i64>,
198    #[serde(borrow)]
199    #[builder(into)]
200    pub name: jacquard_common::CowStr<'a>,
201    #[serde(borrow)]
202    pub purpose: crate::app_bsky::graph::ListPurpose<'a>,
203    #[serde(borrow)]
204    pub uri: jacquard_common::types::string::AtUri<'a>,
205    #[serde(skip_serializing_if = "std::option::Option::is_none")]
206    #[builder(into)]
207    #[serde(borrow)]
208    pub viewer: Option<crate::app_bsky::graph::ListViewerState<'a>>,
209}
210
211#[jacquard_derive::lexicon]
212#[derive(
213    serde::Serialize,
214    serde::Deserialize,
215    Debug,
216    Clone,
217    PartialEq,
218    Eq,
219    jacquard_derive::IntoStatic,
220    bon::Builder
221)]
222#[serde(rename_all = "camelCase")]
223pub struct ListViewBasic<'a> {
224    #[serde(skip_serializing_if = "std::option::Option::is_none")]
225    #[builder(into)]
226    #[serde(borrow)]
227    pub avatar: Option<jacquard_common::types::string::Uri<'a>>,
228    #[serde(borrow)]
229    pub cid: jacquard_common::types::string::Cid<'a>,
230    #[serde(skip_serializing_if = "std::option::Option::is_none")]
231    #[builder(into)]
232    pub indexed_at: Option<jacquard_common::types::string::Datetime>,
233    #[serde(skip_serializing_if = "std::option::Option::is_none")]
234    #[builder(into)]
235    #[serde(borrow)]
236    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
237    #[serde(skip_serializing_if = "std::option::Option::is_none")]
238    #[builder(into)]
239    pub list_item_count: Option<i64>,
240    #[serde(borrow)]
241    #[builder(into)]
242    pub name: jacquard_common::CowStr<'a>,
243    #[serde(borrow)]
244    pub purpose: crate::app_bsky::graph::ListPurpose<'a>,
245    #[serde(borrow)]
246    pub uri: jacquard_common::types::string::AtUri<'a>,
247    #[serde(skip_serializing_if = "std::option::Option::is_none")]
248    #[builder(into)]
249    #[serde(borrow)]
250    pub viewer: Option<crate::app_bsky::graph::ListViewerState<'a>>,
251}
252
253#[jacquard_derive::lexicon]
254#[derive(
255    serde::Serialize,
256    serde::Deserialize,
257    Debug,
258    Clone,
259    PartialEq,
260    Eq,
261    jacquard_derive::IntoStatic,
262    Default
263)]
264#[serde(rename_all = "camelCase")]
265pub struct ListViewerState<'a> {
266    #[serde(skip_serializing_if = "std::option::Option::is_none")]
267    #[serde(borrow)]
268    pub blocked: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
269    #[serde(skip_serializing_if = "std::option::Option::is_none")]
270    pub muted: std::option::Option<bool>,
271}
272
273/// A list of actors to apply an aggregate moderation action (mute/block) on.
274#[derive(
275    serde::Serialize,
276    serde::Deserialize,
277    Debug,
278    Clone,
279    PartialEq,
280    Eq,
281    Hash,
282    jacquard_derive::IntoStatic
283)]
284pub struct Modlist;
285impl std::fmt::Display for Modlist {
286    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
287        write!(f, "modlist")
288    }
289}
290
291/// indicates that a handle or DID could not be resolved
292#[jacquard_derive::lexicon]
293#[derive(
294    serde::Serialize,
295    serde::Deserialize,
296    Debug,
297    Clone,
298    PartialEq,
299    Eq,
300    jacquard_derive::IntoStatic,
301    bon::Builder
302)]
303#[serde(rename_all = "camelCase")]
304pub struct NotFoundActor<'a> {
305    #[serde(borrow)]
306    pub actor: jacquard_common::types::ident::AtIdentifier<'a>,
307    pub not_found: bool,
308}
309
310/// A list of actors used for only for reference purposes such as within a starter pack.
311#[derive(
312    serde::Serialize,
313    serde::Deserialize,
314    Debug,
315    Clone,
316    PartialEq,
317    Eq,
318    Hash,
319    jacquard_derive::IntoStatic
320)]
321pub struct Referencelist;
322impl std::fmt::Display for Referencelist {
323    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
324        write!(f, "referencelist")
325    }
326}
327
328/// lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)
329#[jacquard_derive::lexicon]
330#[derive(
331    serde::Serialize,
332    serde::Deserialize,
333    Debug,
334    Clone,
335    PartialEq,
336    Eq,
337    jacquard_derive::IntoStatic,
338    bon::Builder
339)]
340#[serde(rename_all = "camelCase")]
341pub struct Relationship<'a> {
342    #[serde(borrow)]
343    pub did: jacquard_common::types::string::Did<'a>,
344    /// if the actor is followed by this DID, contains the AT-URI of the follow record
345    #[serde(skip_serializing_if = "std::option::Option::is_none")]
346    #[builder(into)]
347    #[serde(borrow)]
348    pub followed_by: Option<jacquard_common::types::string::AtUri<'a>>,
349    /// if the actor follows this DID, this is the AT-URI of the follow record
350    #[serde(skip_serializing_if = "std::option::Option::is_none")]
351    #[builder(into)]
352    #[serde(borrow)]
353    pub following: Option<jacquard_common::types::string::AtUri<'a>>,
354}
355
356#[jacquard_derive::lexicon]
357#[derive(
358    serde::Serialize,
359    serde::Deserialize,
360    Debug,
361    Clone,
362    PartialEq,
363    Eq,
364    jacquard_derive::IntoStatic,
365    bon::Builder
366)]
367#[serde(rename_all = "camelCase")]
368pub struct StarterPackView<'a> {
369    #[serde(borrow)]
370    pub cid: jacquard_common::types::string::Cid<'a>,
371    #[serde(borrow)]
372    pub creator: crate::app_bsky::actor::ProfileViewBasic<'a>,
373    #[serde(skip_serializing_if = "std::option::Option::is_none")]
374    #[builder(into)]
375    #[serde(borrow)]
376    pub feeds: Option<Vec<crate::app_bsky::feed::GeneratorView<'a>>>,
377    pub indexed_at: jacquard_common::types::string::Datetime,
378    #[serde(skip_serializing_if = "std::option::Option::is_none")]
379    #[builder(into)]
380    pub joined_all_time_count: Option<i64>,
381    #[serde(skip_serializing_if = "std::option::Option::is_none")]
382    #[builder(into)]
383    pub joined_week_count: Option<i64>,
384    #[serde(skip_serializing_if = "std::option::Option::is_none")]
385    #[builder(into)]
386    #[serde(borrow)]
387    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
388    #[serde(skip_serializing_if = "std::option::Option::is_none")]
389    #[builder(into)]
390    #[serde(borrow)]
391    pub list: Option<crate::app_bsky::graph::ListViewBasic<'a>>,
392    #[serde(skip_serializing_if = "std::option::Option::is_none")]
393    #[builder(into)]
394    #[serde(borrow)]
395    pub list_items_sample: Option<Vec<crate::app_bsky::graph::ListItemView<'a>>>,
396    #[serde(borrow)]
397    pub record: jacquard_common::types::value::Data<'a>,
398    #[serde(borrow)]
399    pub uri: jacquard_common::types::string::AtUri<'a>,
400}
401
402#[jacquard_derive::lexicon]
403#[derive(
404    serde::Serialize,
405    serde::Deserialize,
406    Debug,
407    Clone,
408    PartialEq,
409    Eq,
410    jacquard_derive::IntoStatic,
411    bon::Builder
412)]
413#[serde(rename_all = "camelCase")]
414pub struct StarterPackViewBasic<'a> {
415    #[serde(borrow)]
416    pub cid: jacquard_common::types::string::Cid<'a>,
417    #[serde(borrow)]
418    pub creator: crate::app_bsky::actor::ProfileViewBasic<'a>,
419    pub indexed_at: jacquard_common::types::string::Datetime,
420    #[serde(skip_serializing_if = "std::option::Option::is_none")]
421    #[builder(into)]
422    pub joined_all_time_count: Option<i64>,
423    #[serde(skip_serializing_if = "std::option::Option::is_none")]
424    #[builder(into)]
425    pub joined_week_count: Option<i64>,
426    #[serde(skip_serializing_if = "std::option::Option::is_none")]
427    #[builder(into)]
428    #[serde(borrow)]
429    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
430    #[serde(skip_serializing_if = "std::option::Option::is_none")]
431    #[builder(into)]
432    pub list_item_count: Option<i64>,
433    #[serde(borrow)]
434    pub record: jacquard_common::types::value::Data<'a>,
435    #[serde(borrow)]
436    pub uri: jacquard_common::types::string::AtUri<'a>,
437}