jacquard_api/com_atproto/server/
create_account.rs1#[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 #[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 #[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 #[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 #[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 #[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 #[serde(borrow)]
84 pub did: jacquard_common::types::string::Did<'a>,
85 #[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
214pub 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
232pub 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}