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