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 jacquard_derive::IntoStatic
106)]
107#[serde(tag = "error", content = "message")]
108#[serde(bound(deserialize = "'de: 'a"))]
109pub enum CreateAccountError<'a> {
110 #[serde(rename = "InvalidHandle")]
111 InvalidHandle(std::option::Option<String>),
112 #[serde(rename = "InvalidPassword")]
113 InvalidPassword(std::option::Option<String>),
114 #[serde(rename = "InvalidInviteCode")]
115 InvalidInviteCode(std::option::Option<String>),
116 #[serde(rename = "HandleNotAvailable")]
117 HandleNotAvailable(std::option::Option<String>),
118 #[serde(rename = "UnsupportedDomain")]
119 UnsupportedDomain(std::option::Option<String>),
120 #[serde(rename = "UnresolvableDid")]
121 UnresolvableDid(std::option::Option<String>),
122 #[serde(rename = "IncompatibleDidDoc")]
123 IncompatibleDidDoc(std::option::Option<String>),
124}
125
126impl std::fmt::Display for CreateAccountError<'_> {
127 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
128 match self {
129 Self::InvalidHandle(msg) => {
130 write!(f, "InvalidHandle")?;
131 if let Some(msg) = msg {
132 write!(f, ": {}", msg)?;
133 }
134 Ok(())
135 }
136 Self::InvalidPassword(msg) => {
137 write!(f, "InvalidPassword")?;
138 if let Some(msg) = msg {
139 write!(f, ": {}", msg)?;
140 }
141 Ok(())
142 }
143 Self::InvalidInviteCode(msg) => {
144 write!(f, "InvalidInviteCode")?;
145 if let Some(msg) = msg {
146 write!(f, ": {}", msg)?;
147 }
148 Ok(())
149 }
150 Self::HandleNotAvailable(msg) => {
151 write!(f, "HandleNotAvailable")?;
152 if let Some(msg) = msg {
153 write!(f, ": {}", msg)?;
154 }
155 Ok(())
156 }
157 Self::UnsupportedDomain(msg) => {
158 write!(f, "UnsupportedDomain")?;
159 if let Some(msg) = msg {
160 write!(f, ": {}", msg)?;
161 }
162 Ok(())
163 }
164 Self::UnresolvableDid(msg) => {
165 write!(f, "UnresolvableDid")?;
166 if let Some(msg) = msg {
167 write!(f, ": {}", msg)?;
168 }
169 Ok(())
170 }
171 Self::IncompatibleDidDoc(msg) => {
172 write!(f, "IncompatibleDidDoc")?;
173 if let Some(msg) = msg {
174 write!(f, ": {}", msg)?;
175 }
176 Ok(())
177 }
178 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
179 }
180 }
181}
182
183///Response type for
184///com.atproto.server.createAccount
185pub struct CreateAccountResponse;
186impl jacquard_common::xrpc::XrpcResp for CreateAccountResponse {
187 const NSID: &'static str = "com.atproto.server.createAccount";
188 const ENCODING: &'static str = "application/json";
189 type Output<'de> = CreateAccountOutput<'de>;
190 type Err<'de> = CreateAccountError<'de>;
191}
192
193impl<'a> jacquard_common::xrpc::XrpcRequest for CreateAccount<'a> {
194 const NSID: &'static str = "com.atproto.server.createAccount";
195 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
196 "application/json",
197 );
198 type Response = CreateAccountResponse;
199}
200
201///Endpoint type for
202///com.atproto.server.createAccount
203pub struct CreateAccountRequest;
204impl jacquard_common::xrpc::XrpcEndpoint for CreateAccountRequest {
205 const PATH: &'static str = "/xrpc/com.atproto.server.createAccount";
206 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
207 "application/json",
208 );
209 type Request<'de> = CreateAccount<'de>;
210 type Response = CreateAccountResponse;
211}