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}