A better Rust ATProto crate
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}