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    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<'de> jacquard_common::xrpc::XrpcRequest<'de> for CreateAccount<'de> {
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}