1pub mod activate_account;
9pub mod check_account_status;
10pub mod confirm_email;
11pub mod create_account;
12pub mod create_app_password;
13pub mod create_invite_code;
14pub mod create_invite_codes;
15pub mod create_session;
16pub mod deactivate_account;
17pub mod delete_account;
18pub mod delete_session;
19pub mod describe_server;
20pub mod get_account_invite_codes;
21pub mod get_service_auth;
22pub mod get_session;
23pub mod list_app_passwords;
24pub mod refresh_session;
25pub mod request_account_delete;
26pub mod request_email_confirmation;
27pub mod request_email_update;
28pub mod request_password_reset;
29pub mod reserve_signing_key;
30pub mod reset_password;
31pub mod revoke_app_password;
32pub mod update_email;
33
34
35#[allow(unused_imports)]
36use alloc::collections::BTreeMap;
37
38#[allow(unused_imports)]
39use core::marker::PhantomData;
40use jacquard_common::CowStr;
41
42#[allow(unused_imports)]
43use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation;
44use jacquard_common::types::string::{Did, Datetime};
45use jacquard_derive::{IntoStatic, lexicon};
46use jacquard_lexicon::lexicon::LexiconDoc;
47use jacquard_lexicon::schema::LexiconSchema;
48
49#[allow(unused_imports)]
50use jacquard_lexicon::validation::{ConstraintError, ValidationPath};
51use serde::{Serialize, Deserialize};
52use crate::com_atproto::server;
53
54#[lexicon]
55#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
56#[serde(rename_all = "camelCase")]
57pub struct InviteCode<'a> {
58 pub available: i64,
59 #[serde(borrow)]
60 pub code: CowStr<'a>,
61 pub created_at: Datetime,
62 #[serde(borrow)]
63 pub created_by: CowStr<'a>,
64 pub disabled: bool,
65 #[serde(borrow)]
66 pub for_account: CowStr<'a>,
67 #[serde(borrow)]
68 pub uses: Vec<server::InviteCodeUse<'a>>,
69}
70
71
72#[lexicon]
73#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
74#[serde(rename_all = "camelCase")]
75pub struct InviteCodeUse<'a> {
76 pub used_at: Datetime,
77 #[serde(borrow)]
78 pub used_by: Did<'a>,
79}
80
81impl<'a> LexiconSchema for InviteCode<'a> {
82 fn nsid() -> &'static str {
83 "com.atproto.server.defs"
84 }
85 fn def_name() -> &'static str {
86 "inviteCode"
87 }
88 fn lexicon_doc() -> LexiconDoc<'static> {
89 lexicon_doc_com_atproto_server_defs()
90 }
91 fn validate(&self) -> Result<(), ConstraintError> {
92 Ok(())
93 }
94}
95
96impl<'a> LexiconSchema for InviteCodeUse<'a> {
97 fn nsid() -> &'static str {
98 "com.atproto.server.defs"
99 }
100 fn def_name() -> &'static str {
101 "inviteCodeUse"
102 }
103 fn lexicon_doc() -> LexiconDoc<'static> {
104 lexicon_doc_com_atproto_server_defs()
105 }
106 fn validate(&self) -> Result<(), ConstraintError> {
107 Ok(())
108 }
109}
110
111pub mod invite_code_state {
112
113 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
114 #[allow(unused)]
115 use ::core::marker::PhantomData;
116 mod sealed {
117 pub trait Sealed {}
118 }
119 pub trait State: sealed::Sealed {
121 type CreatedAt;
122 type Disabled;
123 type Available;
124 type Code;
125 type ForAccount;
126 type Uses;
127 type CreatedBy;
128 }
129 pub struct Empty(());
131 impl sealed::Sealed for Empty {}
132 impl State for Empty {
133 type CreatedAt = Unset;
134 type Disabled = Unset;
135 type Available = Unset;
136 type Code = Unset;
137 type ForAccount = Unset;
138 type Uses = Unset;
139 type CreatedBy = Unset;
140 }
141 pub struct SetCreatedAt<S: State = Empty>(PhantomData<fn() -> S>);
143 impl<S: State> sealed::Sealed for SetCreatedAt<S> {}
144 impl<S: State> State for SetCreatedAt<S> {
145 type CreatedAt = Set<members::created_at>;
146 type Disabled = S::Disabled;
147 type Available = S::Available;
148 type Code = S::Code;
149 type ForAccount = S::ForAccount;
150 type Uses = S::Uses;
151 type CreatedBy = S::CreatedBy;
152 }
153 pub struct SetDisabled<S: State = Empty>(PhantomData<fn() -> S>);
155 impl<S: State> sealed::Sealed for SetDisabled<S> {}
156 impl<S: State> State for SetDisabled<S> {
157 type CreatedAt = S::CreatedAt;
158 type Disabled = Set<members::disabled>;
159 type Available = S::Available;
160 type Code = S::Code;
161 type ForAccount = S::ForAccount;
162 type Uses = S::Uses;
163 type CreatedBy = S::CreatedBy;
164 }
165 pub struct SetAvailable<S: State = Empty>(PhantomData<fn() -> S>);
167 impl<S: State> sealed::Sealed for SetAvailable<S> {}
168 impl<S: State> State for SetAvailable<S> {
169 type CreatedAt = S::CreatedAt;
170 type Disabled = S::Disabled;
171 type Available = Set<members::available>;
172 type Code = S::Code;
173 type ForAccount = S::ForAccount;
174 type Uses = S::Uses;
175 type CreatedBy = S::CreatedBy;
176 }
177 pub struct SetCode<S: State = Empty>(PhantomData<fn() -> S>);
179 impl<S: State> sealed::Sealed for SetCode<S> {}
180 impl<S: State> State for SetCode<S> {
181 type CreatedAt = S::CreatedAt;
182 type Disabled = S::Disabled;
183 type Available = S::Available;
184 type Code = Set<members::code>;
185 type ForAccount = S::ForAccount;
186 type Uses = S::Uses;
187 type CreatedBy = S::CreatedBy;
188 }
189 pub struct SetForAccount<S: State = Empty>(PhantomData<fn() -> S>);
191 impl<S: State> sealed::Sealed for SetForAccount<S> {}
192 impl<S: State> State for SetForAccount<S> {
193 type CreatedAt = S::CreatedAt;
194 type Disabled = S::Disabled;
195 type Available = S::Available;
196 type Code = S::Code;
197 type ForAccount = Set<members::for_account>;
198 type Uses = S::Uses;
199 type CreatedBy = S::CreatedBy;
200 }
201 pub struct SetUses<S: State = Empty>(PhantomData<fn() -> S>);
203 impl<S: State> sealed::Sealed for SetUses<S> {}
204 impl<S: State> State for SetUses<S> {
205 type CreatedAt = S::CreatedAt;
206 type Disabled = S::Disabled;
207 type Available = S::Available;
208 type Code = S::Code;
209 type ForAccount = S::ForAccount;
210 type Uses = Set<members::uses>;
211 type CreatedBy = S::CreatedBy;
212 }
213 pub struct SetCreatedBy<S: State = Empty>(PhantomData<fn() -> S>);
215 impl<S: State> sealed::Sealed for SetCreatedBy<S> {}
216 impl<S: State> State for SetCreatedBy<S> {
217 type CreatedAt = S::CreatedAt;
218 type Disabled = S::Disabled;
219 type Available = S::Available;
220 type Code = S::Code;
221 type ForAccount = S::ForAccount;
222 type Uses = S::Uses;
223 type CreatedBy = Set<members::created_by>;
224 }
225 #[allow(non_camel_case_types)]
227 pub mod members {
228 pub struct created_at(());
230 pub struct disabled(());
232 pub struct available(());
234 pub struct code(());
236 pub struct for_account(());
238 pub struct uses(());
240 pub struct created_by(());
242 }
243}
244
245pub struct InviteCodeBuilder<'a, S: invite_code_state::State> {
247 _state: PhantomData<fn() -> S>,
248 _fields: (
249 Option<i64>,
250 Option<CowStr<'a>>,
251 Option<Datetime>,
252 Option<CowStr<'a>>,
253 Option<bool>,
254 Option<CowStr<'a>>,
255 Option<Vec<server::InviteCodeUse<'a>>>,
256 ),
257 _lifetime: PhantomData<&'a ()>,
258}
259
260impl<'a> InviteCode<'a> {
261 pub fn new() -> InviteCodeBuilder<'a, invite_code_state::Empty> {
263 InviteCodeBuilder::new()
264 }
265}
266
267impl<'a> InviteCodeBuilder<'a, invite_code_state::Empty> {
268 pub fn new() -> Self {
270 InviteCodeBuilder {
271 _state: PhantomData,
272 _fields: (None, None, None, None, None, None, None),
273 _lifetime: PhantomData,
274 }
275 }
276}
277
278impl<'a, S> InviteCodeBuilder<'a, S>
279where
280 S: invite_code_state::State,
281 S::Available: invite_code_state::IsUnset,
282{
283 pub fn available(
285 mut self,
286 value: impl Into<i64>,
287 ) -> InviteCodeBuilder<'a, invite_code_state::SetAvailable<S>> {
288 self._fields.0 = Option::Some(value.into());
289 InviteCodeBuilder {
290 _state: PhantomData,
291 _fields: self._fields,
292 _lifetime: PhantomData,
293 }
294 }
295}
296
297impl<'a, S> InviteCodeBuilder<'a, S>
298where
299 S: invite_code_state::State,
300 S::Code: invite_code_state::IsUnset,
301{
302 pub fn code(
304 mut self,
305 value: impl Into<CowStr<'a>>,
306 ) -> InviteCodeBuilder<'a, invite_code_state::SetCode<S>> {
307 self._fields.1 = Option::Some(value.into());
308 InviteCodeBuilder {
309 _state: PhantomData,
310 _fields: self._fields,
311 _lifetime: PhantomData,
312 }
313 }
314}
315
316impl<'a, S> InviteCodeBuilder<'a, S>
317where
318 S: invite_code_state::State,
319 S::CreatedAt: invite_code_state::IsUnset,
320{
321 pub fn created_at(
323 mut self,
324 value: impl Into<Datetime>,
325 ) -> InviteCodeBuilder<'a, invite_code_state::SetCreatedAt<S>> {
326 self._fields.2 = Option::Some(value.into());
327 InviteCodeBuilder {
328 _state: PhantomData,
329 _fields: self._fields,
330 _lifetime: PhantomData,
331 }
332 }
333}
334
335impl<'a, S> InviteCodeBuilder<'a, S>
336where
337 S: invite_code_state::State,
338 S::CreatedBy: invite_code_state::IsUnset,
339{
340 pub fn created_by(
342 mut self,
343 value: impl Into<CowStr<'a>>,
344 ) -> InviteCodeBuilder<'a, invite_code_state::SetCreatedBy<S>> {
345 self._fields.3 = Option::Some(value.into());
346 InviteCodeBuilder {
347 _state: PhantomData,
348 _fields: self._fields,
349 _lifetime: PhantomData,
350 }
351 }
352}
353
354impl<'a, S> InviteCodeBuilder<'a, S>
355where
356 S: invite_code_state::State,
357 S::Disabled: invite_code_state::IsUnset,
358{
359 pub fn disabled(
361 mut self,
362 value: impl Into<bool>,
363 ) -> InviteCodeBuilder<'a, invite_code_state::SetDisabled<S>> {
364 self._fields.4 = Option::Some(value.into());
365 InviteCodeBuilder {
366 _state: PhantomData,
367 _fields: self._fields,
368 _lifetime: PhantomData,
369 }
370 }
371}
372
373impl<'a, S> InviteCodeBuilder<'a, S>
374where
375 S: invite_code_state::State,
376 S::ForAccount: invite_code_state::IsUnset,
377{
378 pub fn for_account(
380 mut self,
381 value: impl Into<CowStr<'a>>,
382 ) -> InviteCodeBuilder<'a, invite_code_state::SetForAccount<S>> {
383 self._fields.5 = Option::Some(value.into());
384 InviteCodeBuilder {
385 _state: PhantomData,
386 _fields: self._fields,
387 _lifetime: PhantomData,
388 }
389 }
390}
391
392impl<'a, S> InviteCodeBuilder<'a, S>
393where
394 S: invite_code_state::State,
395 S::Uses: invite_code_state::IsUnset,
396{
397 pub fn uses(
399 mut self,
400 value: impl Into<Vec<server::InviteCodeUse<'a>>>,
401 ) -> InviteCodeBuilder<'a, invite_code_state::SetUses<S>> {
402 self._fields.6 = Option::Some(value.into());
403 InviteCodeBuilder {
404 _state: PhantomData,
405 _fields: self._fields,
406 _lifetime: PhantomData,
407 }
408 }
409}
410
411impl<'a, S> InviteCodeBuilder<'a, S>
412where
413 S: invite_code_state::State,
414 S::CreatedAt: invite_code_state::IsSet,
415 S::Disabled: invite_code_state::IsSet,
416 S::Available: invite_code_state::IsSet,
417 S::Code: invite_code_state::IsSet,
418 S::ForAccount: invite_code_state::IsSet,
419 S::Uses: invite_code_state::IsSet,
420 S::CreatedBy: invite_code_state::IsSet,
421{
422 pub fn build(self) -> InviteCode<'a> {
424 InviteCode {
425 available: self._fields.0.unwrap(),
426 code: self._fields.1.unwrap(),
427 created_at: self._fields.2.unwrap(),
428 created_by: self._fields.3.unwrap(),
429 disabled: self._fields.4.unwrap(),
430 for_account: self._fields.5.unwrap(),
431 uses: self._fields.6.unwrap(),
432 extra_data: Default::default(),
433 }
434 }
435 pub fn build_with_data(
437 self,
438 extra_data: BTreeMap<
439 jacquard_common::deps::smol_str::SmolStr,
440 jacquard_common::types::value::Data<'a>,
441 >,
442 ) -> InviteCode<'a> {
443 InviteCode {
444 available: self._fields.0.unwrap(),
445 code: self._fields.1.unwrap(),
446 created_at: self._fields.2.unwrap(),
447 created_by: self._fields.3.unwrap(),
448 disabled: self._fields.4.unwrap(),
449 for_account: self._fields.5.unwrap(),
450 uses: self._fields.6.unwrap(),
451 extra_data: Some(extra_data),
452 }
453 }
454}
455
456fn lexicon_doc_com_atproto_server_defs() -> LexiconDoc<'static> {
457 #[allow(unused_imports)]
458 use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType};
459 use jacquard_lexicon::lexicon::*;
460 use alloc::collections::BTreeMap;
461 LexiconDoc {
462 lexicon: Lexicon::Lexicon1,
463 id: CowStr::new_static("com.atproto.server.defs"),
464 defs: {
465 let mut map = BTreeMap::new();
466 map.insert(
467 SmolStr::new_static("inviteCode"),
468 LexUserType::Object(LexObject {
469 required: Some(
470 vec![
471 SmolStr::new_static("code"),
472 SmolStr::new_static("available"),
473 SmolStr::new_static("disabled"),
474 SmolStr::new_static("forAccount"),
475 SmolStr::new_static("createdBy"),
476 SmolStr::new_static("createdAt"), SmolStr::new_static("uses")
477 ],
478 ),
479 properties: {
480 #[allow(unused_mut)]
481 let mut map = BTreeMap::new();
482 map.insert(
483 SmolStr::new_static("available"),
484 LexObjectProperty::Integer(LexInteger {
485 ..Default::default()
486 }),
487 );
488 map.insert(
489 SmolStr::new_static("code"),
490 LexObjectProperty::String(LexString { ..Default::default() }),
491 );
492 map.insert(
493 SmolStr::new_static("createdAt"),
494 LexObjectProperty::String(LexString {
495 format: Some(LexStringFormat::Datetime),
496 ..Default::default()
497 }),
498 );
499 map.insert(
500 SmolStr::new_static("createdBy"),
501 LexObjectProperty::String(LexString { ..Default::default() }),
502 );
503 map.insert(
504 SmolStr::new_static("disabled"),
505 LexObjectProperty::Boolean(LexBoolean {
506 ..Default::default()
507 }),
508 );
509 map.insert(
510 SmolStr::new_static("forAccount"),
511 LexObjectProperty::String(LexString { ..Default::default() }),
512 );
513 map.insert(
514 SmolStr::new_static("uses"),
515 LexObjectProperty::Array(LexArray {
516 items: LexArrayItem::Ref(LexRef {
517 r#ref: CowStr::new_static("#inviteCodeUse"),
518 ..Default::default()
519 }),
520 ..Default::default()
521 }),
522 );
523 map
524 },
525 ..Default::default()
526 }),
527 );
528 map.insert(
529 SmolStr::new_static("inviteCodeUse"),
530 LexUserType::Object(LexObject {
531 required: Some(
532 vec![
533 SmolStr::new_static("usedBy"), SmolStr::new_static("usedAt")
534 ],
535 ),
536 properties: {
537 #[allow(unused_mut)]
538 let mut map = BTreeMap::new();
539 map.insert(
540 SmolStr::new_static("usedAt"),
541 LexObjectProperty::String(LexString {
542 format: Some(LexStringFormat::Datetime),
543 ..Default::default()
544 }),
545 );
546 map.insert(
547 SmolStr::new_static("usedBy"),
548 LexObjectProperty::String(LexString {
549 format: Some(LexStringFormat::Did),
550 ..Default::default()
551 }),
552 );
553 map
554 },
555 ..Default::default()
556 }),
557 );
558 map
559 },
560 ..Default::default()
561 }
562}
563
564pub mod invite_code_use_state {
565
566 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
567 #[allow(unused)]
568 use ::core::marker::PhantomData;
569 mod sealed {
570 pub trait Sealed {}
571 }
572 pub trait State: sealed::Sealed {
574 type UsedAt;
575 type UsedBy;
576 }
577 pub struct Empty(());
579 impl sealed::Sealed for Empty {}
580 impl State for Empty {
581 type UsedAt = Unset;
582 type UsedBy = Unset;
583 }
584 pub struct SetUsedAt<S: State = Empty>(PhantomData<fn() -> S>);
586 impl<S: State> sealed::Sealed for SetUsedAt<S> {}
587 impl<S: State> State for SetUsedAt<S> {
588 type UsedAt = Set<members::used_at>;
589 type UsedBy = S::UsedBy;
590 }
591 pub struct SetUsedBy<S: State = Empty>(PhantomData<fn() -> S>);
593 impl<S: State> sealed::Sealed for SetUsedBy<S> {}
594 impl<S: State> State for SetUsedBy<S> {
595 type UsedAt = S::UsedAt;
596 type UsedBy = Set<members::used_by>;
597 }
598 #[allow(non_camel_case_types)]
600 pub mod members {
601 pub struct used_at(());
603 pub struct used_by(());
605 }
606}
607
608pub struct InviteCodeUseBuilder<'a, S: invite_code_use_state::State> {
610 _state: PhantomData<fn() -> S>,
611 _fields: (Option<Datetime>, Option<Did<'a>>),
612 _lifetime: PhantomData<&'a ()>,
613}
614
615impl<'a> InviteCodeUse<'a> {
616 pub fn new() -> InviteCodeUseBuilder<'a, invite_code_use_state::Empty> {
618 InviteCodeUseBuilder::new()
619 }
620}
621
622impl<'a> InviteCodeUseBuilder<'a, invite_code_use_state::Empty> {
623 pub fn new() -> Self {
625 InviteCodeUseBuilder {
626 _state: PhantomData,
627 _fields: (None, None),
628 _lifetime: PhantomData,
629 }
630 }
631}
632
633impl<'a, S> InviteCodeUseBuilder<'a, S>
634where
635 S: invite_code_use_state::State,
636 S::UsedAt: invite_code_use_state::IsUnset,
637{
638 pub fn used_at(
640 mut self,
641 value: impl Into<Datetime>,
642 ) -> InviteCodeUseBuilder<'a, invite_code_use_state::SetUsedAt<S>> {
643 self._fields.0 = Option::Some(value.into());
644 InviteCodeUseBuilder {
645 _state: PhantomData,
646 _fields: self._fields,
647 _lifetime: PhantomData,
648 }
649 }
650}
651
652impl<'a, S> InviteCodeUseBuilder<'a, S>
653where
654 S: invite_code_use_state::State,
655 S::UsedBy: invite_code_use_state::IsUnset,
656{
657 pub fn used_by(
659 mut self,
660 value: impl Into<Did<'a>>,
661 ) -> InviteCodeUseBuilder<'a, invite_code_use_state::SetUsedBy<S>> {
662 self._fields.1 = Option::Some(value.into());
663 InviteCodeUseBuilder {
664 _state: PhantomData,
665 _fields: self._fields,
666 _lifetime: PhantomData,
667 }
668 }
669}
670
671impl<'a, S> InviteCodeUseBuilder<'a, S>
672where
673 S: invite_code_use_state::State,
674 S::UsedAt: invite_code_use_state::IsSet,
675 S::UsedBy: invite_code_use_state::IsSet,
676{
677 pub fn build(self) -> InviteCodeUse<'a> {
679 InviteCodeUse {
680 used_at: self._fields.0.unwrap(),
681 used_by: self._fields.1.unwrap(),
682 extra_data: Default::default(),
683 }
684 }
685 pub fn build_with_data(
687 self,
688 extra_data: BTreeMap<
689 jacquard_common::deps::smol_str::SmolStr,
690 jacquard_common::types::value::Data<'a>,
691 >,
692 ) -> InviteCodeUse<'a> {
693 InviteCodeUse {
694 used_at: self._fields.0.unwrap(),
695 used_by: self._fields.1.unwrap(),
696 extra_data: Some(extra_data),
697 }
698 }
699}