//! `POST /_matrix/identity/*/sign-ed25519` //! //! Sign invitation details. pub mod v2 { //! `/v2/` ([spec]) //! //! [spec]: https://spec.matrix.org/v1.4/identity-service-api/#post_matrixidentityv2sign-ed25519 use ruma_common::{ api::{request, response, Metadata}, metadata, serde::Base64, OwnedUserId, ServerSignatures, UserId, }; const METADATA: Metadata = metadata! { method: POST, rate_limited: false, authentication: AccessToken, history: { 1.0 => "/_matrix/identity/v2/sign-ed25519", } }; /// Request type for the `sign_invitation_ed25519` endpoint. #[request] pub struct Request<'a> { /// The Matrix user ID of the user accepting the invitation. pub mxid: &'a UserId, /// The token from the call to store-invite. pub token: &'a str, /// The private key, encoded as unpadded base64. pub private_key: &'a Base64, } /// Response type for the `sign_invitation_ed25519` endpoint. #[response] pub struct Response { /// The Matrix user ID of the user accepting the invitation. pub mxid: OwnedUserId, /// The Matrix user ID of the user who sent the invitation. pub sender: OwnedUserId, /// The signature of the mxid, sender and token. pub signatures: ServerSignatures, /// The token for the invitation. pub token: String, } impl<'a> Request<'a> { /// Creates a `Request` with the given Matrix user ID, token and private_key. pub fn new(mxid: &'a UserId, token: &'a str, private_key: &'a Base64) -> Self { Self { mxid, token, private_key } } } impl Response { /// Creates a `Response` with the given Matrix user ID, sender user ID, signatures and /// token. pub fn new( mxid: OwnedUserId, sender: OwnedUserId, signatures: ServerSignatures, token: String, ) -> Self { Self { mxid, sender, signatures, token } } } }