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    #[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}