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