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