jacquard_api/com_atproto/server/
create_account.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.server.createAccount
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[jacquard_derive::lexicon]
9#[derive(
10    serde::Serialize,
11    serde::Deserialize,
12    Debug,
13    Clone,
14    PartialEq,
15    Eq,
16    bon::Builder
17)]
18#[serde(rename_all = "camelCase")]
19#[builder(start_fn = new)]
20pub struct CreateAccount<'a> {
21    ///Pre-existing atproto DID, being imported to a new account.
22    #[serde(skip_serializing_if = "std::option::Option::is_none")]
23    #[serde(borrow)]
24    pub did: std::option::Option<jacquard_common::types::string::Did<'a>>,
25    #[serde(skip_serializing_if = "std::option::Option::is_none")]
26    #[serde(borrow)]
27    #[builder(into)]
28    pub email: std::option::Option<jacquard_common::CowStr<'a>>,
29    ///Requested handle for the account.
30    #[serde(borrow)]
31    pub handle: jacquard_common::types::string::Handle<'a>,
32    #[serde(skip_serializing_if = "std::option::Option::is_none")]
33    #[serde(borrow)]
34    #[builder(into)]
35    pub invite_code: std::option::Option<jacquard_common::CowStr<'a>>,
36    ///Initial account password. May need to meet instance-specific password strength requirements.
37    #[serde(skip_serializing_if = "std::option::Option::is_none")]
38    #[serde(borrow)]
39    #[builder(into)]
40    pub password: std::option::Option<jacquard_common::CowStr<'a>>,
41    ///A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented.
42    #[serde(skip_serializing_if = "std::option::Option::is_none")]
43    #[serde(borrow)]
44    pub plc_op: std::option::Option<jacquard_common::types::value::Data<'a>>,
45    ///DID PLC rotation key (aka, recovery key) to be included in PLC creation operation.
46    #[serde(skip_serializing_if = "std::option::Option::is_none")]
47    #[serde(borrow)]
48    #[builder(into)]
49    pub recovery_key: std::option::Option<jacquard_common::CowStr<'a>>,
50    #[serde(skip_serializing_if = "std::option::Option::is_none")]
51    #[serde(borrow)]
52    #[builder(into)]
53    pub verification_code: std::option::Option<jacquard_common::CowStr<'a>>,
54    #[serde(skip_serializing_if = "std::option::Option::is_none")]
55    #[serde(borrow)]
56    #[builder(into)]
57    pub verification_phone: std::option::Option<jacquard_common::CowStr<'a>>,
58    #[serde(flatten)]
59    #[serde(borrow)]
60    #[builder(default)]
61    pub extra_data: ::std::collections::BTreeMap<
62        ::jacquard_common::smol_str::SmolStr,
63        ::jacquard_common::types::value::Data<'a>,
64    >,
65}
66
67impl jacquard_common::IntoStatic for CreateAccount<'_> {
68    type Output = CreateAccount<'static>;
69    fn into_static(self) -> Self::Output {
70        CreateAccount {
71            did: self.did.into_static(),
72            email: self.email.into_static(),
73            handle: self.handle.into_static(),
74            invite_code: self.invite_code.into_static(),
75            password: self.password.into_static(),
76            plc_op: self.plc_op.into_static(),
77            recovery_key: self.recovery_key.into_static(),
78            verification_code: self.verification_code.into_static(),
79            verification_phone: self.verification_phone.into_static(),
80            extra_data: self.extra_data.into_static(),
81        }
82    }
83}
84
85#[jacquard_derive::lexicon]
86#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
87#[serde(rename_all = "camelCase")]
88pub struct CreateAccountOutput<'a> {
89    #[serde(borrow)]
90    pub access_jwt: jacquard_common::CowStr<'a>,
91    ///The DID of the new account.
92    #[serde(borrow)]
93    pub did: jacquard_common::types::string::Did<'a>,
94    ///Complete DID document.
95    #[serde(skip_serializing_if = "std::option::Option::is_none")]
96    #[serde(borrow)]
97    pub did_doc: std::option::Option<jacquard_common::types::value::Data<'a>>,
98    #[serde(borrow)]
99    pub handle: jacquard_common::types::string::Handle<'a>,
100    #[serde(borrow)]
101    pub refresh_jwt: jacquard_common::CowStr<'a>,
102}
103
104impl jacquard_common::IntoStatic for CreateAccountOutput<'_> {
105    type Output = CreateAccountOutput<'static>;
106    fn into_static(self) -> Self::Output {
107        CreateAccountOutput {
108            access_jwt: self.access_jwt.into_static(),
109            did: self.did.into_static(),
110            did_doc: self.did_doc.into_static(),
111            handle: self.handle.into_static(),
112            refresh_jwt: self.refresh_jwt.into_static(),
113            extra_data: self.extra_data.into_static(),
114        }
115    }
116}
117
118#[jacquard_derive::open_union]
119#[derive(
120    serde::Serialize,
121    serde::Deserialize,
122    Debug,
123    Clone,
124    PartialEq,
125    Eq,
126    thiserror::Error,
127    miette::Diagnostic
128)]
129#[serde(tag = "error", content = "message")]
130#[serde(bound(deserialize = "'de: 'a"))]
131pub enum CreateAccountError<'a> {
132    #[serde(rename = "InvalidHandle")]
133    InvalidHandle(std::option::Option<String>),
134    #[serde(rename = "InvalidPassword")]
135    InvalidPassword(std::option::Option<String>),
136    #[serde(rename = "InvalidInviteCode")]
137    InvalidInviteCode(std::option::Option<String>),
138    #[serde(rename = "HandleNotAvailable")]
139    HandleNotAvailable(std::option::Option<String>),
140    #[serde(rename = "UnsupportedDomain")]
141    UnsupportedDomain(std::option::Option<String>),
142    #[serde(rename = "UnresolvableDid")]
143    UnresolvableDid(std::option::Option<String>),
144    #[serde(rename = "IncompatibleDidDoc")]
145    IncompatibleDidDoc(std::option::Option<String>),
146}
147
148impl std::fmt::Display for CreateAccountError<'_> {
149    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
150        match self {
151            Self::InvalidHandle(msg) => {
152                write!(f, "InvalidHandle")?;
153                if let Some(msg) = msg {
154                    write!(f, ": {}", msg)?;
155                }
156                Ok(())
157            }
158            Self::InvalidPassword(msg) => {
159                write!(f, "InvalidPassword")?;
160                if let Some(msg) = msg {
161                    write!(f, ": {}", msg)?;
162                }
163                Ok(())
164            }
165            Self::InvalidInviteCode(msg) => {
166                write!(f, "InvalidInviteCode")?;
167                if let Some(msg) = msg {
168                    write!(f, ": {}", msg)?;
169                }
170                Ok(())
171            }
172            Self::HandleNotAvailable(msg) => {
173                write!(f, "HandleNotAvailable")?;
174                if let Some(msg) = msg {
175                    write!(f, ": {}", msg)?;
176                }
177                Ok(())
178            }
179            Self::UnsupportedDomain(msg) => {
180                write!(f, "UnsupportedDomain")?;
181                if let Some(msg) = msg {
182                    write!(f, ": {}", msg)?;
183                }
184                Ok(())
185            }
186            Self::UnresolvableDid(msg) => {
187                write!(f, "UnresolvableDid")?;
188                if let Some(msg) = msg {
189                    write!(f, ": {}", msg)?;
190                }
191                Ok(())
192            }
193            Self::IncompatibleDidDoc(msg) => {
194                write!(f, "IncompatibleDidDoc")?;
195                if let Some(msg) = msg {
196                    write!(f, ": {}", msg)?;
197                }
198                Ok(())
199            }
200            Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
201        }
202    }
203}
204
205impl jacquard_common::IntoStatic for CreateAccountError<'_> {
206    type Output = CreateAccountError<'static>;
207    fn into_static(self) -> Self::Output {
208        match self {
209            CreateAccountError::InvalidHandle(v) => {
210                CreateAccountError::InvalidHandle(v.into_static())
211            }
212            CreateAccountError::InvalidPassword(v) => {
213                CreateAccountError::InvalidPassword(v.into_static())
214            }
215            CreateAccountError::InvalidInviteCode(v) => {
216                CreateAccountError::InvalidInviteCode(v.into_static())
217            }
218            CreateAccountError::HandleNotAvailable(v) => {
219                CreateAccountError::HandleNotAvailable(v.into_static())
220            }
221            CreateAccountError::UnsupportedDomain(v) => {
222                CreateAccountError::UnsupportedDomain(v.into_static())
223            }
224            CreateAccountError::UnresolvableDid(v) => {
225                CreateAccountError::UnresolvableDid(v.into_static())
226            }
227            CreateAccountError::IncompatibleDidDoc(v) => {
228                CreateAccountError::IncompatibleDidDoc(v.into_static())
229            }
230            CreateAccountError::Unknown(v) => {
231                CreateAccountError::Unknown(v.into_static())
232            }
233        }
234    }
235}
236
237impl jacquard_common::types::xrpc::XrpcRequest for CreateAccount<'_> {
238    const NSID: &'static str = "com.atproto.server.createAccount";
239    const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure(
240        "application/json",
241    );
242    const OUTPUT_ENCODING: &'static str = "application/json";
243    type Output<'de> = CreateAccountOutput<'de>;
244    type Err<'de> = CreateAccountError<'de>;
245}