jacquard_api/app_bsky/
feed.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.feed.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 describe_feed_generator;
9pub mod generator;
10pub mod get_actor_feeds;
11pub mod get_actor_likes;
12pub mod get_author_feed;
13pub mod get_feed;
14pub mod get_feed_generator;
15pub mod get_feed_generators;
16pub mod get_feed_skeleton;
17pub mod get_likes;
18pub mod get_list_feed;
19pub mod get_post_thread;
20pub mod get_posts;
21pub mod get_quotes;
22pub mod get_reposted_by;
23pub mod get_suggested_feeds;
24pub mod get_timeline;
25pub mod like;
26pub mod post;
27pub mod postgate;
28pub mod repost;
29pub mod search_posts;
30pub mod send_interactions;
31pub mod threadgate;
32
33#[jacquard_derive::lexicon]
34#[derive(
35    serde::Serialize,
36    serde::Deserialize,
37    Debug,
38    Clone,
39    PartialEq,
40    Eq,
41    jacquard_derive::IntoStatic,
42    bon::Builder
43)]
44#[serde(rename_all = "camelCase")]
45pub struct BlockedAuthor<'a> {
46    #[serde(borrow)]
47    pub did: jacquard_common::types::string::Did<'a>,
48    #[serde(skip_serializing_if = "std::option::Option::is_none")]
49    #[builder(into)]
50    #[serde(borrow)]
51    pub viewer: Option<crate::app_bsky::actor::ViewerState<'a>>,
52}
53
54#[jacquard_derive::lexicon]
55#[derive(
56    serde::Serialize,
57    serde::Deserialize,
58    Debug,
59    Clone,
60    PartialEq,
61    Eq,
62    jacquard_derive::IntoStatic,
63    bon::Builder
64)]
65#[serde(rename_all = "camelCase")]
66pub struct BlockedPost<'a> {
67    #[serde(borrow)]
68    pub author: crate::app_bsky::feed::BlockedAuthor<'a>,
69    pub blocked: bool,
70    #[serde(borrow)]
71    pub uri: jacquard_common::types::string::AtUri<'a>,
72}
73
74/// User clicked through to the author of the feed item
75#[derive(
76    serde::Serialize,
77    serde::Deserialize,
78    Debug,
79    Clone,
80    PartialEq,
81    Eq,
82    Hash,
83    jacquard_derive::IntoStatic
84)]
85pub struct ClickthroughAuthor;
86impl std::fmt::Display for ClickthroughAuthor {
87    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
88        write!(f, "clickthroughAuthor")
89    }
90}
91
92/// User clicked through to the embedded content of the feed item
93#[derive(
94    serde::Serialize,
95    serde::Deserialize,
96    Debug,
97    Clone,
98    PartialEq,
99    Eq,
100    Hash,
101    jacquard_derive::IntoStatic
102)]
103pub struct ClickthroughEmbed;
104impl std::fmt::Display for ClickthroughEmbed {
105    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
106        write!(f, "clickthroughEmbed")
107    }
108}
109
110/// User clicked through to the feed item
111#[derive(
112    serde::Serialize,
113    serde::Deserialize,
114    Debug,
115    Clone,
116    PartialEq,
117    Eq,
118    Hash,
119    jacquard_derive::IntoStatic
120)]
121pub struct ClickthroughItem;
122impl std::fmt::Display for ClickthroughItem {
123    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
124        write!(f, "clickthroughItem")
125    }
126}
127
128/// User clicked through to the reposter of the feed item
129#[derive(
130    serde::Serialize,
131    serde::Deserialize,
132    Debug,
133    Clone,
134    PartialEq,
135    Eq,
136    Hash,
137    jacquard_derive::IntoStatic
138)]
139pub struct ClickthroughReposter;
140impl std::fmt::Display for ClickthroughReposter {
141    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
142        write!(f, "clickthroughReposter")
143    }
144}
145
146/// Declares the feed generator returns any types of posts.
147#[derive(
148    serde::Serialize,
149    serde::Deserialize,
150    Debug,
151    Clone,
152    PartialEq,
153    Eq,
154    Hash,
155    jacquard_derive::IntoStatic
156)]
157pub struct ContentModeUnspecified;
158impl std::fmt::Display for ContentModeUnspecified {
159    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
160        write!(f, "contentModeUnspecified")
161    }
162}
163
164/// Declares the feed generator returns posts containing app.bsky.embed.video embeds.
165#[derive(
166    serde::Serialize,
167    serde::Deserialize,
168    Debug,
169    Clone,
170    PartialEq,
171    Eq,
172    Hash,
173    jacquard_derive::IntoStatic
174)]
175pub struct ContentModeVideo;
176impl std::fmt::Display for ContentModeVideo {
177    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
178        write!(f, "contentModeVideo")
179    }
180}
181
182#[jacquard_derive::lexicon]
183#[derive(
184    serde::Serialize,
185    serde::Deserialize,
186    Debug,
187    Clone,
188    PartialEq,
189    Eq,
190    jacquard_derive::IntoStatic,
191    bon::Builder
192)]
193#[serde(rename_all = "camelCase")]
194pub struct FeedViewPost<'a> {
195    /// Context provided by feed generator that may be passed back alongside interactions.
196    #[serde(skip_serializing_if = "std::option::Option::is_none")]
197    #[builder(into)]
198    #[serde(borrow)]
199    pub feed_context: Option<jacquard_common::CowStr<'a>>,
200    #[serde(borrow)]
201    pub post: crate::app_bsky::feed::PostView<'a>,
202    #[serde(skip_serializing_if = "std::option::Option::is_none")]
203    #[builder(into)]
204    #[serde(borrow)]
205    pub reason: Option<FeedViewPostReason<'a>>,
206    #[serde(skip_serializing_if = "std::option::Option::is_none")]
207    #[builder(into)]
208    #[serde(borrow)]
209    pub reply: Option<crate::app_bsky::feed::ReplyRef<'a>>,
210    /// Unique identifier per request that may be passed back alongside interactions.
211    #[serde(skip_serializing_if = "std::option::Option::is_none")]
212    #[builder(into)]
213    #[serde(borrow)]
214    pub req_id: Option<jacquard_common::CowStr<'a>>,
215}
216
217#[jacquard_derive::open_union]
218#[derive(
219    serde::Serialize,
220    serde::Deserialize,
221    Debug,
222    Clone,
223    PartialEq,
224    Eq,
225    jacquard_derive::IntoStatic
226)]
227#[serde(tag = "$type")]
228#[serde(bound(deserialize = "'de: 'a"))]
229pub enum FeedViewPostReason<'a> {
230    #[serde(rename = "app.bsky.feed.defs#reasonRepost")]
231    ReasonRepost(Box<crate::app_bsky::feed::ReasonRepost<'a>>),
232    #[serde(rename = "app.bsky.feed.defs#reasonPin")]
233    ReasonPin(Box<crate::app_bsky::feed::ReasonPin<'a>>),
234}
235
236#[jacquard_derive::lexicon]
237#[derive(
238    serde::Serialize,
239    serde::Deserialize,
240    Debug,
241    Clone,
242    PartialEq,
243    Eq,
244    jacquard_derive::IntoStatic,
245    bon::Builder
246)]
247#[serde(rename_all = "camelCase")]
248pub struct GeneratorView<'a> {
249    #[serde(skip_serializing_if = "std::option::Option::is_none")]
250    #[builder(into)]
251    pub accepts_interactions: Option<bool>,
252    #[serde(skip_serializing_if = "std::option::Option::is_none")]
253    #[builder(into)]
254    #[serde(borrow)]
255    pub avatar: Option<jacquard_common::types::string::Uri<'a>>,
256    #[serde(borrow)]
257    pub cid: jacquard_common::types::string::Cid<'a>,
258    #[serde(skip_serializing_if = "std::option::Option::is_none")]
259    #[builder(into)]
260    #[serde(borrow)]
261    pub content_mode: Option<jacquard_common::CowStr<'a>>,
262    #[serde(borrow)]
263    pub creator: crate::app_bsky::actor::ProfileView<'a>,
264    #[serde(skip_serializing_if = "std::option::Option::is_none")]
265    #[builder(into)]
266    #[serde(borrow)]
267    pub description: Option<jacquard_common::CowStr<'a>>,
268    #[serde(skip_serializing_if = "std::option::Option::is_none")]
269    #[builder(into)]
270    #[serde(borrow)]
271    pub description_facets: Option<Vec<crate::app_bsky::richtext::facet::Facet<'a>>>,
272    #[serde(borrow)]
273    pub did: jacquard_common::types::string::Did<'a>,
274    #[serde(borrow)]
275    #[builder(into)]
276    pub display_name: jacquard_common::CowStr<'a>,
277    pub indexed_at: jacquard_common::types::string::Datetime,
278    #[serde(skip_serializing_if = "std::option::Option::is_none")]
279    #[builder(into)]
280    #[serde(borrow)]
281    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
282    #[serde(skip_serializing_if = "std::option::Option::is_none")]
283    #[builder(into)]
284    pub like_count: Option<i64>,
285    #[serde(borrow)]
286    pub uri: jacquard_common::types::string::AtUri<'a>,
287    #[serde(skip_serializing_if = "std::option::Option::is_none")]
288    #[builder(into)]
289    #[serde(borrow)]
290    pub viewer: Option<crate::app_bsky::feed::GeneratorViewerState<'a>>,
291}
292
293#[jacquard_derive::lexicon]
294#[derive(
295    serde::Serialize,
296    serde::Deserialize,
297    Debug,
298    Clone,
299    PartialEq,
300    Eq,
301    jacquard_derive::IntoStatic,
302    Default
303)]
304#[serde(rename_all = "camelCase")]
305pub struct GeneratorViewerState<'a> {
306    #[serde(skip_serializing_if = "std::option::Option::is_none")]
307    #[serde(borrow)]
308    pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
309}
310
311#[jacquard_derive::lexicon]
312#[derive(
313    serde::Serialize,
314    serde::Deserialize,
315    Debug,
316    Clone,
317    PartialEq,
318    Eq,
319    jacquard_derive::IntoStatic,
320    Default
321)]
322#[serde(rename_all = "camelCase")]
323pub struct Interaction<'a> {
324    #[serde(skip_serializing_if = "std::option::Option::is_none")]
325    #[serde(borrow)]
326    pub event: std::option::Option<jacquard_common::CowStr<'a>>,
327    /// Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.
328    #[serde(skip_serializing_if = "std::option::Option::is_none")]
329    #[serde(borrow)]
330    pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
331    #[serde(skip_serializing_if = "std::option::Option::is_none")]
332    #[serde(borrow)]
333    pub item: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
334    /// Unique identifier per request that may be passed back alongside interactions.
335    #[serde(skip_serializing_if = "std::option::Option::is_none")]
336    #[serde(borrow)]
337    pub req_id: std::option::Option<jacquard_common::CowStr<'a>>,
338}
339
340/// User liked the feed item
341#[derive(
342    serde::Serialize,
343    serde::Deserialize,
344    Debug,
345    Clone,
346    PartialEq,
347    Eq,
348    Hash,
349    jacquard_derive::IntoStatic
350)]
351pub struct InteractionLike;
352impl std::fmt::Display for InteractionLike {
353    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
354        write!(f, "interactionLike")
355    }
356}
357
358/// User quoted the feed item
359#[derive(
360    serde::Serialize,
361    serde::Deserialize,
362    Debug,
363    Clone,
364    PartialEq,
365    Eq,
366    Hash,
367    jacquard_derive::IntoStatic
368)]
369pub struct InteractionQuote;
370impl std::fmt::Display for InteractionQuote {
371    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
372        write!(f, "interactionQuote")
373    }
374}
375
376/// User replied to the feed item
377#[derive(
378    serde::Serialize,
379    serde::Deserialize,
380    Debug,
381    Clone,
382    PartialEq,
383    Eq,
384    Hash,
385    jacquard_derive::IntoStatic
386)]
387pub struct InteractionReply;
388impl std::fmt::Display for InteractionReply {
389    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
390        write!(f, "interactionReply")
391    }
392}
393
394/// User reposted the feed item
395#[derive(
396    serde::Serialize,
397    serde::Deserialize,
398    Debug,
399    Clone,
400    PartialEq,
401    Eq,
402    Hash,
403    jacquard_derive::IntoStatic
404)]
405pub struct InteractionRepost;
406impl std::fmt::Display for InteractionRepost {
407    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
408        write!(f, "interactionRepost")
409    }
410}
411
412/// Feed item was seen by user
413#[derive(
414    serde::Serialize,
415    serde::Deserialize,
416    Debug,
417    Clone,
418    PartialEq,
419    Eq,
420    Hash,
421    jacquard_derive::IntoStatic
422)]
423pub struct InteractionSeen;
424impl std::fmt::Display for InteractionSeen {
425    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
426        write!(f, "interactionSeen")
427    }
428}
429
430/// User shared the feed item
431#[derive(
432    serde::Serialize,
433    serde::Deserialize,
434    Debug,
435    Clone,
436    PartialEq,
437    Eq,
438    Hash,
439    jacquard_derive::IntoStatic
440)]
441pub struct InteractionShare;
442impl std::fmt::Display for InteractionShare {
443    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
444        write!(f, "interactionShare")
445    }
446}
447
448#[jacquard_derive::lexicon]
449#[derive(
450    serde::Serialize,
451    serde::Deserialize,
452    Debug,
453    Clone,
454    PartialEq,
455    Eq,
456    jacquard_derive::IntoStatic,
457    bon::Builder
458)]
459#[serde(rename_all = "camelCase")]
460pub struct NotFoundPost<'a> {
461    pub not_found: bool,
462    #[serde(borrow)]
463    pub uri: jacquard_common::types::string::AtUri<'a>,
464}
465
466#[jacquard_derive::lexicon]
467#[derive(
468    serde::Serialize,
469    serde::Deserialize,
470    Debug,
471    Clone,
472    PartialEq,
473    Eq,
474    jacquard_derive::IntoStatic,
475    bon::Builder
476)]
477#[serde(rename_all = "camelCase")]
478pub struct PostView<'a> {
479    #[serde(borrow)]
480    pub author: crate::app_bsky::actor::ProfileViewBasic<'a>,
481    #[serde(skip_serializing_if = "std::option::Option::is_none")]
482    #[builder(into)]
483    pub bookmark_count: Option<i64>,
484    #[serde(borrow)]
485    pub cid: jacquard_common::types::string::Cid<'a>,
486    #[serde(skip_serializing_if = "std::option::Option::is_none")]
487    #[builder(into)]
488    #[serde(borrow)]
489    pub embed: Option<PostViewEmbed<'a>>,
490    pub indexed_at: jacquard_common::types::string::Datetime,
491    #[serde(skip_serializing_if = "std::option::Option::is_none")]
492    #[builder(into)]
493    #[serde(borrow)]
494    pub labels: Option<Vec<crate::com_atproto::label::Label<'a>>>,
495    #[serde(skip_serializing_if = "std::option::Option::is_none")]
496    #[builder(into)]
497    pub like_count: Option<i64>,
498    #[serde(skip_serializing_if = "std::option::Option::is_none")]
499    #[builder(into)]
500    pub quote_count: Option<i64>,
501    #[serde(borrow)]
502    pub record: jacquard_common::types::value::Data<'a>,
503    #[serde(skip_serializing_if = "std::option::Option::is_none")]
504    #[builder(into)]
505    pub reply_count: Option<i64>,
506    #[serde(skip_serializing_if = "std::option::Option::is_none")]
507    #[builder(into)]
508    pub repost_count: Option<i64>,
509    #[serde(skip_serializing_if = "std::option::Option::is_none")]
510    #[builder(into)]
511    #[serde(borrow)]
512    pub threadgate: Option<crate::app_bsky::feed::ThreadgateView<'a>>,
513    #[serde(borrow)]
514    pub uri: jacquard_common::types::string::AtUri<'a>,
515    #[serde(skip_serializing_if = "std::option::Option::is_none")]
516    #[builder(into)]
517    #[serde(borrow)]
518    pub viewer: Option<crate::app_bsky::feed::ViewerState<'a>>,
519}
520
521#[jacquard_derive::open_union]
522#[derive(
523    serde::Serialize,
524    serde::Deserialize,
525    Debug,
526    Clone,
527    PartialEq,
528    Eq,
529    jacquard_derive::IntoStatic
530)]
531#[serde(tag = "$type")]
532#[serde(bound(deserialize = "'de: 'a"))]
533pub enum PostViewEmbed<'a> {
534    #[serde(rename = "app.bsky.embed.images#view")]
535    ImagesView(Box<crate::app_bsky::embed::images::View<'a>>),
536    #[serde(rename = "app.bsky.embed.video#view")]
537    VideoView(Box<crate::app_bsky::embed::video::View<'a>>),
538    #[serde(rename = "app.bsky.embed.external#view")]
539    ExternalView(Box<crate::app_bsky::embed::external::View<'a>>),
540    #[serde(rename = "app.bsky.embed.record#view")]
541    RecordView(Box<crate::app_bsky::embed::record::View<'a>>),
542    #[serde(rename = "app.bsky.embed.recordWithMedia#view")]
543    RecordWithMediaView(Box<crate::app_bsky::embed::record_with_media::View<'a>>),
544}
545
546#[jacquard_derive::lexicon]
547#[derive(
548    serde::Serialize,
549    serde::Deserialize,
550    Debug,
551    Clone,
552    PartialEq,
553    Eq,
554    jacquard_derive::IntoStatic,
555    Default
556)]
557#[serde(rename_all = "camelCase")]
558pub struct ReasonPin<'a> {}
559#[jacquard_derive::lexicon]
560#[derive(
561    serde::Serialize,
562    serde::Deserialize,
563    Debug,
564    Clone,
565    PartialEq,
566    Eq,
567    jacquard_derive::IntoStatic,
568    bon::Builder
569)]
570#[serde(rename_all = "camelCase")]
571pub struct ReasonRepost<'a> {
572    #[serde(borrow)]
573    pub by: crate::app_bsky::actor::ProfileViewBasic<'a>,
574    #[serde(skip_serializing_if = "std::option::Option::is_none")]
575    #[builder(into)]
576    #[serde(borrow)]
577    pub cid: Option<jacquard_common::types::string::Cid<'a>>,
578    pub indexed_at: jacquard_common::types::string::Datetime,
579    #[serde(skip_serializing_if = "std::option::Option::is_none")]
580    #[builder(into)]
581    #[serde(borrow)]
582    pub uri: Option<jacquard_common::types::string::AtUri<'a>>,
583}
584
585#[jacquard_derive::lexicon]
586#[derive(
587    serde::Serialize,
588    serde::Deserialize,
589    Debug,
590    Clone,
591    PartialEq,
592    Eq,
593    jacquard_derive::IntoStatic,
594    bon::Builder
595)]
596#[serde(rename_all = "camelCase")]
597pub struct ReplyRef<'a> {
598    /// When parent is a reply to another post, this is the author of that post.
599    #[serde(skip_serializing_if = "std::option::Option::is_none")]
600    #[builder(into)]
601    #[serde(borrow)]
602    pub grandparent_author: Option<crate::app_bsky::actor::ProfileViewBasic<'a>>,
603    #[serde(borrow)]
604    pub parent: ReplyRefParent<'a>,
605    #[serde(borrow)]
606    pub root: ReplyRefRoot<'a>,
607}
608
609#[jacquard_derive::open_union]
610#[derive(
611    serde::Serialize,
612    serde::Deserialize,
613    Debug,
614    Clone,
615    PartialEq,
616    Eq,
617    jacquard_derive::IntoStatic
618)]
619#[serde(tag = "$type")]
620#[serde(bound(deserialize = "'de: 'a"))]
621pub enum ReplyRefParent<'a> {
622    #[serde(rename = "app.bsky.feed.defs#postView")]
623    PostView(Box<crate::app_bsky::feed::PostView<'a>>),
624    #[serde(rename = "app.bsky.feed.defs#notFoundPost")]
625    NotFoundPost(Box<crate::app_bsky::feed::NotFoundPost<'a>>),
626    #[serde(rename = "app.bsky.feed.defs#blockedPost")]
627    BlockedPost(Box<crate::app_bsky::feed::BlockedPost<'a>>),
628}
629
630#[jacquard_derive::open_union]
631#[derive(
632    serde::Serialize,
633    serde::Deserialize,
634    Debug,
635    Clone,
636    PartialEq,
637    Eq,
638    jacquard_derive::IntoStatic
639)]
640#[serde(tag = "$type")]
641#[serde(bound(deserialize = "'de: 'a"))]
642pub enum ReplyRefRoot<'a> {
643    #[serde(rename = "app.bsky.feed.defs#postView")]
644    PostView(Box<crate::app_bsky::feed::PostView<'a>>),
645    #[serde(rename = "app.bsky.feed.defs#notFoundPost")]
646    NotFoundPost(Box<crate::app_bsky::feed::NotFoundPost<'a>>),
647    #[serde(rename = "app.bsky.feed.defs#blockedPost")]
648    BlockedPost(Box<crate::app_bsky::feed::BlockedPost<'a>>),
649}
650
651/// Request that less content like the given feed item be shown in the feed
652#[derive(
653    serde::Serialize,
654    serde::Deserialize,
655    Debug,
656    Clone,
657    PartialEq,
658    Eq,
659    Hash,
660    jacquard_derive::IntoStatic
661)]
662pub struct RequestLess;
663impl std::fmt::Display for RequestLess {
664    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
665        write!(f, "requestLess")
666    }
667}
668
669/// Request that more content like the given feed item be shown in the feed
670#[derive(
671    serde::Serialize,
672    serde::Deserialize,
673    Debug,
674    Clone,
675    PartialEq,
676    Eq,
677    Hash,
678    jacquard_derive::IntoStatic
679)]
680pub struct RequestMore;
681impl std::fmt::Display for RequestMore {
682    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
683        write!(f, "requestMore")
684    }
685}
686
687#[jacquard_derive::lexicon]
688#[derive(
689    serde::Serialize,
690    serde::Deserialize,
691    Debug,
692    Clone,
693    PartialEq,
694    Eq,
695    jacquard_derive::IntoStatic,
696    bon::Builder
697)]
698#[serde(rename_all = "camelCase")]
699pub struct SkeletonFeedPost<'a> {
700    /// Context that will be passed through to client and may be passed to feed generator back alongside interactions.
701    #[serde(skip_serializing_if = "std::option::Option::is_none")]
702    #[builder(into)]
703    #[serde(borrow)]
704    pub feed_context: Option<jacquard_common::CowStr<'a>>,
705    #[serde(borrow)]
706    pub post: jacquard_common::types::string::AtUri<'a>,
707    #[serde(skip_serializing_if = "std::option::Option::is_none")]
708    #[builder(into)]
709    #[serde(borrow)]
710    pub reason: Option<SkeletonFeedPostReason<'a>>,
711}
712
713#[jacquard_derive::open_union]
714#[derive(
715    serde::Serialize,
716    serde::Deserialize,
717    Debug,
718    Clone,
719    PartialEq,
720    Eq,
721    jacquard_derive::IntoStatic
722)]
723#[serde(tag = "$type")]
724#[serde(bound(deserialize = "'de: 'a"))]
725pub enum SkeletonFeedPostReason<'a> {
726    #[serde(rename = "app.bsky.feed.defs#skeletonReasonRepost")]
727    SkeletonReasonRepost(Box<crate::app_bsky::feed::SkeletonReasonRepost<'a>>),
728    #[serde(rename = "app.bsky.feed.defs#skeletonReasonPin")]
729    SkeletonReasonPin(Box<crate::app_bsky::feed::SkeletonReasonPin<'a>>),
730}
731
732#[jacquard_derive::lexicon]
733#[derive(
734    serde::Serialize,
735    serde::Deserialize,
736    Debug,
737    Clone,
738    PartialEq,
739    Eq,
740    jacquard_derive::IntoStatic,
741    Default
742)]
743#[serde(rename_all = "camelCase")]
744pub struct SkeletonReasonPin<'a> {}
745#[jacquard_derive::lexicon]
746#[derive(
747    serde::Serialize,
748    serde::Deserialize,
749    Debug,
750    Clone,
751    PartialEq,
752    Eq,
753    jacquard_derive::IntoStatic,
754    bon::Builder
755)]
756#[serde(rename_all = "camelCase")]
757pub struct SkeletonReasonRepost<'a> {
758    #[serde(borrow)]
759    pub repost: jacquard_common::types::string::AtUri<'a>,
760}
761
762/// Metadata about this post within the context of the thread it is in.
763#[jacquard_derive::lexicon]
764#[derive(
765    serde::Serialize,
766    serde::Deserialize,
767    Debug,
768    Clone,
769    PartialEq,
770    Eq,
771    jacquard_derive::IntoStatic,
772    Default
773)]
774#[serde(rename_all = "camelCase")]
775pub struct ThreadContext<'a> {
776    #[serde(skip_serializing_if = "std::option::Option::is_none")]
777    #[serde(borrow)]
778    pub root_author_like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
779}
780
781#[jacquard_derive::lexicon]
782#[derive(
783    serde::Serialize,
784    serde::Deserialize,
785    Debug,
786    Clone,
787    PartialEq,
788    Eq,
789    jacquard_derive::IntoStatic,
790    bon::Builder
791)]
792#[serde(rename_all = "camelCase")]
793pub struct ThreadViewPost<'a> {
794    #[serde(skip_serializing_if = "std::option::Option::is_none")]
795    #[builder(into)]
796    #[serde(borrow)]
797    pub parent: Option<ThreadViewPostParent<'a>>,
798    #[serde(borrow)]
799    pub post: crate::app_bsky::feed::PostView<'a>,
800    #[serde(skip_serializing_if = "std::option::Option::is_none")]
801    #[builder(into)]
802    #[serde(borrow)]
803    pub replies: Option<Vec<ThreadViewPostRepliesItem<'a>>>,
804    #[serde(skip_serializing_if = "std::option::Option::is_none")]
805    #[builder(into)]
806    #[serde(borrow)]
807    pub thread_context: Option<crate::app_bsky::feed::ThreadContext<'a>>,
808}
809
810#[jacquard_derive::open_union]
811#[derive(
812    serde::Serialize,
813    serde::Deserialize,
814    Debug,
815    Clone,
816    PartialEq,
817    Eq,
818    jacquard_derive::IntoStatic
819)]
820#[serde(tag = "$type")]
821#[serde(bound(deserialize = "'de: 'a"))]
822pub enum ThreadViewPostParent<'a> {
823    #[serde(rename = "app.bsky.feed.defs#threadViewPost")]
824    ThreadViewPost(Box<crate::app_bsky::feed::ThreadViewPost<'a>>),
825    #[serde(rename = "app.bsky.feed.defs#notFoundPost")]
826    NotFoundPost(Box<crate::app_bsky::feed::NotFoundPost<'a>>),
827    #[serde(rename = "app.bsky.feed.defs#blockedPost")]
828    BlockedPost(Box<crate::app_bsky::feed::BlockedPost<'a>>),
829}
830
831#[jacquard_derive::open_union]
832#[derive(
833    serde::Serialize,
834    serde::Deserialize,
835    Debug,
836    Clone,
837    PartialEq,
838    Eq,
839    jacquard_derive::IntoStatic
840)]
841#[serde(tag = "$type")]
842#[serde(bound(deserialize = "'de: 'a"))]
843pub enum ThreadViewPostRepliesItem<'a> {
844    #[serde(rename = "app.bsky.feed.defs#threadViewPost")]
845    ThreadViewPost(Box<crate::app_bsky::feed::ThreadViewPost<'a>>),
846    #[serde(rename = "app.bsky.feed.defs#notFoundPost")]
847    NotFoundPost(Box<crate::app_bsky::feed::NotFoundPost<'a>>),
848    #[serde(rename = "app.bsky.feed.defs#blockedPost")]
849    BlockedPost(Box<crate::app_bsky::feed::BlockedPost<'a>>),
850}
851
852#[jacquard_derive::lexicon]
853#[derive(
854    serde::Serialize,
855    serde::Deserialize,
856    Debug,
857    Clone,
858    PartialEq,
859    Eq,
860    jacquard_derive::IntoStatic,
861    Default
862)]
863#[serde(rename_all = "camelCase")]
864pub struct ThreadgateView<'a> {
865    #[serde(skip_serializing_if = "std::option::Option::is_none")]
866    #[serde(borrow)]
867    pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
868    #[serde(skip_serializing_if = "std::option::Option::is_none")]
869    #[serde(borrow)]
870    pub lists: std::option::Option<Vec<crate::app_bsky::graph::ListViewBasic<'a>>>,
871    #[serde(skip_serializing_if = "std::option::Option::is_none")]
872    #[serde(borrow)]
873    pub record: std::option::Option<jacquard_common::types::value::Data<'a>>,
874    #[serde(skip_serializing_if = "std::option::Option::is_none")]
875    #[serde(borrow)]
876    pub uri: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
877}
878
879/// Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.
880#[jacquard_derive::lexicon]
881#[derive(
882    serde::Serialize,
883    serde::Deserialize,
884    Debug,
885    Clone,
886    PartialEq,
887    Eq,
888    jacquard_derive::IntoStatic,
889    Default
890)]
891#[serde(rename_all = "camelCase")]
892pub struct ViewerState<'a> {
893    #[serde(skip_serializing_if = "std::option::Option::is_none")]
894    pub bookmarked: std::option::Option<bool>,
895    #[serde(skip_serializing_if = "std::option::Option::is_none")]
896    pub embedding_disabled: std::option::Option<bool>,
897    #[serde(skip_serializing_if = "std::option::Option::is_none")]
898    #[serde(borrow)]
899    pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
900    #[serde(skip_serializing_if = "std::option::Option::is_none")]
901    pub pinned: std::option::Option<bool>,
902    #[serde(skip_serializing_if = "std::option::Option::is_none")]
903    pub reply_disabled: std::option::Option<bool>,
904    #[serde(skip_serializing_if = "std::option::Option::is_none")]
905    #[serde(borrow)]
906    pub repost: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
907    #[serde(skip_serializing_if = "std::option::Option::is_none")]
908    pub thread_muted: std::option::Option<bool>,
909}