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}