crate::macros::spec! {
com => {
atproto => {
identity => {
#[command(long_about = "Describe the credentials that should be included in the DID doc of an account that is migrating to this service.")]
getRecommendedDidCredentials => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.identity.get_recommended_did_credentials().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "🔐 Request an email with a code to in order to request a signed PLC operation.")]
requestPlcOperationSignature => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.identity.request_plc_operation_signature().await?))
}
}
}
},
#[command(long_about = "📖 Resolves a handle (domain name) to a DID.")]
resolveHandle => {
input => {
#[arg(long)]
handle: bsky_sdk::api::types::string::Handle
} => Parameters
output => { impl } => Output
},
#[command(long_about = "Signs a PLC operation to update some value(s) in the requesting DID's document.")]
signPlcOperation => {
input => ( camino::Utf8PathBuf ) => Input
output => { impl } => Output
},
#[command(long_about = "Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry.")]
submitPlcOperation => {
input => {
#[arg(long, value_parser = crate::parse::unknown)]
operation: bsky_sdk::api::types::Unknown
} => Input
},
#[command(long_about = "🔐 [PDS] Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary.")]
updateHandle => {
input => {
#[arg(long)]
handle: bsky_sdk::api::types::string::Handle
} => Input
}
},
repo => {
#[command(long_about = "🔐 [PDS] Create a single new repository record.")]
createRecord => {
input => {
#[arg(long)]
collection: bsky_sdk::api::types::string::Nsid,
#[arg(long, value_parser = crate::parse::unknown)]
record: bsky_sdk::api::types::Unknown,
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier,
#[arg(long)]
rkey: Option<String>,
#[arg(long)]
swap_commit: Option<bsky_sdk::api::types::string::Cid>,
#[arg(long)]
validate: Option<bool>
} => Input
output => { impl } => Output
},
#[command(long_about = "🔐 [PDS] Delete a repository record, or ensure it doesn't exist.")]
deleteRecord => {
input => {
#[arg(long)]
collection: bsky_sdk::api::types::string::Nsid,
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier,
#[arg(long)]
rkey: String,
#[arg(long)]
swap_commit: Option<bsky_sdk::api::types::string::Cid>,
#[arg(long)]
swap_record: Option<bsky_sdk::api::types::string::Cid>
} => Input
output => { impl } => Output
},
#[command(long_about = "📖 Get information about an account and repository, including the list of collections.")]
describeRepo => {
input => {
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier
} => Parameters
output => { impl } => Output
},
#[command(long_about = "📖 Get a single record from a repository.")]
getRecord => {
input => {
#[arg(long)]
cid: Option<bsky_sdk::api::types::string::Cid>,
#[arg(long)]
collection: bsky_sdk::api::types::string::Nsid,
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier,
#[arg(long)]
rkey: String
} => Parameters
output => { impl } => Output
},
#[command(long_about = "📖 List a range of records in a repository, matching a specific collection.")]
listRecords => {
input => {
#[arg(long)]
collection: bsky_sdk::api::types::string::Nsid,
#[arg(long)]
cursor: Option<String>,
#[arg(long, value_parser = crate::parse::limited_non_zero_u8::<100>)]
limit: Option<bsky_sdk::api::types::LimitedNonZeroU8<100>>,
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier,
#[arg(long)]
reverse: Option<bool>,
#[arg(long)]
rkey_end: Option<String>,
#[arg(long)]
rkey_start: Option<String>
} => Parameters
output => { impl } => Output
},
#[command(long_about = "🔐 [PDS] Write a repository record, creating or updating it as needed.")]
putRecord => {
input => {
#[arg(long)]
collection: bsky_sdk::api::types::string::Nsid,
#[arg(long, value_parser = crate::parse::unknown)]
record: bsky_sdk::api::types::Unknown,
#[arg(long)]
repo: bsky_sdk::api::types::string::AtIdentifier,
#[arg(long)]
rkey: String,
#[arg(long)]
swap_commit: Option<bsky_sdk::api::types::string::Cid>,
#[arg(long)]
swap_record: Option<bsky_sdk::api::types::string::Cid>,
#[arg(long)]
validate: Option<bool>
} => Input
output => { impl } => Output
}
},
server => {
#[command(long_about = "Activates a currently deactivated account. Used to finalize account migration after the account's repo is imported and identity is setup.")]
activateAccount => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.activate_account().await?))
}
}
}
},
#[command(long_about = "🔐 Returns the status of an account, especially as pertaining to import or recovery.")]
checkAccountStatus => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.check_account_status().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "Confirm an email using a token from com.atproto.server.requestEmailConfirmation.")]
confirmEmail => {
input => {
#[arg(long)]
email: String,
#[arg(long)]
token: String
} => Input
},
#[command(long_about = "[PDS] Create an account.")]
createAccount => {
input => {
#[arg(long)]
did: Option<bsky_sdk::api::types::string::Did>,
#[arg(long)]
email: Option<String>,
#[arg(long)]
handle: bsky_sdk::api::types::string::Handle,
#[arg(long)]
invite_code: Option<String>,
#[arg(long)]
password: Option<String>,
#[arg(long, value_parser = crate::parse::unknown)]
plc_op: Option<bsky_sdk::api::types::Unknown>,
#[arg(long)]
recovery_key: Option<String>,
#[arg(long)]
verification_code: Option<String>,
#[arg(long)]
verification_phone: Option<String>
} => Input
output => { impl } => Output
},
#[command(long_about = "Create an App Password.")]
createAppPassword => {
input => {
#[arg(long)]
name: String,
#[arg(long)]
privileged: Option<bool>
} => Input
output => { impl } => Output
},
#[command(long_about = "Create an invite code.")]
createInviteCode => {
input => {
#[arg(long, value_name = "DID")]
for_account: Option<bsky_sdk::api::types::string::Did>,
#[arg(long, value_name = "INTEGER")]
use_count: i64
} => Input
output => { impl } => Output
},
#[command(long_about = "Create invite codes.")]
createInviteCodes => {
input => {
#[arg(long, value_name = "INTEGER", default_value = "1")]
code_count: i64,
#[arg(long = "for-account", value_name = "DID")]
for_accounts: Option<Vec<bsky_sdk::api::types::string::Did>>,
#[arg(long, value_name = "INTEGER")]
use_count: i64
} => Input
output => { impl } => Output
},
#[command(long_about = "🔑 Create an authentication session.")]
createSession => {
input => {
#[arg(long)]
auth_factor_token: Option<String>,
#[arg(long)]
identifier: String,
#[arg(long)]
password: String
} => Input
output => { impl } => Output
},
#[command(long_about = "Deactivates a currently active account.")]
deactivateAccount => {
input => {
#[arg(long)]
delete_after: Option<bsky_sdk::api::types::string::Datetime>
} => Input
},
#[command(long_about = "🔐 Delete an actor's account with a token and password.")]
deleteAccount => {
input => {
#[arg(long)]
did: bsky_sdk::api::types::string::Did,
#[arg(long)]
password: String,
#[arg(long)]
token: String
} => Input
},
#[command(long_about = "🔐 Delete the current session.")]
deleteSession => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.delete_session().await?))
}
}
}
},
#[command(long_about = "[PDS] Describes the server's account creation requirements and capabilities.")]
describeServer => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.describe_server().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "🔐 Get all invite codes for the current account.")]
getAccountInviteCodes => {
input => {
#[arg(long = "no-create-available", action = clap::ArgAction::SetFalse)]
create_available: Option<bool>,
#[arg(long = "no-include-used", action = clap::ArgAction::SetFalse)]
include_used: Option<bool>
} => Parameters
output => { impl } => Output
},
#[command(long_about = "Get a signed token on behalf of the requesting DID for the requested service.")]
getServiceAuth => {
input => {
#[arg(long, value_name = "DID")]
aud: bsky_sdk::api::types::string::Did,
#[arg(long, value_name = "INTEGER")]
exp: Option<i64>,
#[arg(long, value_name = "NSID")]
lxm: Option<bsky_sdk::api::types::string::Nsid>
} => Parameters
output => { impl } => Output
},
#[command(long_about = "🔐 Get information about the current auth session.")]
getSession => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.get_session().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "List all App Passwords.")]
listAppPasswords => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.list_app_passwords().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "🗝️ Refresh an authentication session.")]
refreshSession => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.refresh_session().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "Initiate a user account deletion via email.")]
requestAccountDelete => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.request_account_delete().await?))
}
}
}
},
#[command(long_about = "Request an email with a code to confirm ownership of email.")]
requestEmailConfirmation => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.request_email_confirmation().await?))
}
}
}
},
#[command(long_about = "Request a token in order to update email.")]
requestEmailUpdate => {
custom => {
struct => {}
impl => {
pub(crate) async fn with(self, agent: &bsky_sdk::BskyAgent) -> Result<Box<dyn crate::Output>, Error> {
Ok(Box::new(agent.api.com.atproto.server.request_email_update().await?))
}
}
}
output => { impl } => Output
},
#[command(long_about = "Initiate a user account password reset via email.")]
requestPasswordReset => {
input => {
#[arg(long)]
email: String
} => Input
},
#[command(long_about = "📖 Reserve a repo signing key, for use with account creation.")]
reserveSigningKey => {
input => {
#[arg(long, value_name = "DID")]
did: Option<bsky_sdk::api::types::string::Did>
} => Input
output => { impl } => Output
},
#[command(long_about = "Reset a user account password using a token.")]
resetPassword => {
input => {
#[arg(long)]
password: String,
#[arg(long)]
token: String
} => Input
},
#[command(long_about = "Revoke an App Password by name.")]
revokeAppPassword => {
input => {
#[arg(long)]
name: String
} => Input
},
#[command(long_about = "Update an account's email.")]
updateEmail => {
input => {
#[arg(long)]
email: String,
#[arg(long)]
email_auth_factor: Option<bool>,
#[arg(long)]
token: Option<String>
} => Input
}
}
}
}
}