# App ## Get Beeper app setup state `client.App.Session(ctx) (*AppSessionResponse, error)` **get** `/v1/app/setup` Return the current Beeper Desktop or Beeper Server sign-in and encrypted messaging setup state. This endpoint is public before sign-in so apps can discover that sign-in is needed; after sign-in, pass a read token. ### Returns - `type AppSessionResponse struct{…}` - `E2EE AppSessionResponseE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppSessionResponseE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State AppSessionResponseState` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppSessionResponseStateNeedsLogin AppSessionResponseState = "needs-login"` - `const AppSessionResponseStateInitializing AppSessionResponseState = "initializing"` - `const AppSessionResponseStateNeedsCrossSigningSetup AppSessionResponseState = "needs-cross-signing-setup"` - `const AppSessionResponseStateNeedsVerification AppSessionResponseState = "needs-verification"` - `const AppSessionResponseStateNeedsSecrets AppSessionResponseState = "needs-secrets"` - `const AppSessionResponseStateNeedsFirstSync AppSessionResponseState = "needs-first-sync"` - `const AppSessionResponseStateReady AppSessionResponseState = "ready"` - `Matrix AppSessionResponseMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppSessionResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppSessionResponseVerificationAvailableActionAccept AppSessionResponseVerificationAvailableAction = "accept"` - `const AppSessionResponseVerificationAvailableActionCancel AppSessionResponseVerificationAvailableAction = "cancel"` - `const AppSessionResponseVerificationAvailableActionQrConfirmScanned AppSessionResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppSessionResponseVerificationAvailableActionSASStart AppSessionResponseVerificationAvailableAction = "sas.start"` - `const AppSessionResponseVerificationAvailableActionSASConfirm AppSessionResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppSessionResponseVerificationDirectionIncoming AppSessionResponseVerificationDirection = "incoming"` - `const AppSessionResponseVerificationDirectionOutgoing AppSessionResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppSessionResponseVerificationMethodQr AppSessionResponseVerificationMethod = "qr"` - `const AppSessionResponseVerificationMethodSAS AppSessionResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppSessionResponseVerificationPurposeLogin AppSessionResponseVerificationPurpose = "login"` - `const AppSessionResponseVerificationPurposeDevice AppSessionResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppSessionResponseVerificationStateRequested AppSessionResponseVerificationState = "requested"` - `const AppSessionResponseVerificationStateReady AppSessionResponseVerificationState = "ready"` - `const AppSessionResponseVerificationStateSASReady AppSessionResponseVerificationState = "sas_ready"` - `const AppSessionResponseVerificationStateQrScanned AppSessionResponseVerificationState = "qr_scanned"` - `const AppSessionResponseVerificationStateDone AppSessionResponseVerificationState = "done"` - `const AppSessionResponseVerificationStateCancelled AppSessionResponseVerificationState = "cancelled"` - `const AppSessionResponseVerificationStateError AppSessionResponseVerificationState = "error"` - `Error AppSessionResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppSessionResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppSessionResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppSessionResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Session(context.TODO()) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.E2EE) } ``` #### Response ```json { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Domain Types ### Verification - `type Verification struct{…}` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const VerificationAvailableActionAccept VerificationAvailableAction = "accept"` - `const VerificationAvailableActionCancel VerificationAvailableAction = "cancel"` - `const VerificationAvailableActionQrConfirmScanned VerificationAvailableAction = "qr.confirmScanned"` - `const VerificationAvailableActionSASStart VerificationAvailableAction = "sas.start"` - `const VerificationAvailableActionSASConfirm VerificationAvailableAction = "sas.confirm"` - `Direction VerificationDirection` Whether this device started or received the verification. - `const VerificationDirectionIncoming VerificationDirection = "incoming"` - `const VerificationDirectionOutgoing VerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const VerificationMethodQr VerificationMethod = "qr"` - `const VerificationMethodSAS VerificationMethod = "sas"` - `Purpose VerificationPurpose` Why this verification exists. - `const VerificationPurposeLogin VerificationPurpose = "login"` - `const VerificationPurposeDevice VerificationPurpose = "device"` - `State VerificationState` Current trusted-device verification state. - `const VerificationStateRequested VerificationState = "requested"` - `const VerificationStateReady VerificationState = "ready"` - `const VerificationStateSASReady VerificationState = "sas_ready"` - `const VerificationStateQrScanned VerificationState = "qr_scanned"` - `const VerificationStateDone VerificationState = "done"` - `const VerificationStateCancelled VerificationState = "cancelled"` - `const VerificationStateError VerificationState = "error"` - `Error VerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice VerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr VerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS VerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. # Login ## Start Beeper app setup `client.App.Login.Start(ctx) (*AppLoginStartResponse, error)` **post** `/v1/app/setup/start` Start setting up Beeper Desktop or Beeper Server. The flow supports existing Beeper accounts and new account creation. ### Returns - `type AppLoginStartResponse struct{…}` - `SetupRequestID string` Setup request ID to use in the next sign-in step. - `SignInMethods []string` Available sign-in methods for this setup request. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Login.Start(context.TODO()) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.SetupRequestID) } ``` #### Response ```json { "setupRequestID": "setupRequestID", "signInMethods": [ "string" ] } ``` ## Send setup sign-in code `client.App.Login.Email(ctx, body) error` **post** `/v1/app/setup/email` Send a sign-in code to the user email address for app setup. ### Parameters - `body AppLoginEmailParams` - `Email param.Field[string]` Email address to send the sign-in code to. - `SetupRequestID param.Field[string]` Setup request ID returned by the start step. ### Example ```go package main import ( "context" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) err := client.App.Login.Email(context.TODO(), beeperdesktopapi.AppLoginEmailParams{ Email: "dev@stainless.com", SetupRequestID: "setupRequestID", }) if err != nil { panic(err.Error()) } } ``` ## Complete setup sign-in with code `client.App.Login.Response(ctx, body) (*AppLoginResponseResponseUnion, error)` **post** `/v1/app/setup/response` Finish setup sign-in with the code sent to the user email address. If the user needs a new account, the response includes account creation copy and username suggestions. ### Parameters - `body AppLoginResponseParams` - `Response param.Field[string]` Sign-in code from the user email. - `SetupRequestID param.Field[string]` Setup request ID returned by the start step. ### Returns - `type AppLoginResponseResponseUnion interface{…}` - `type AppLoginResponseResponseSuccess struct{…}` - `Matrix AppLoginResponseResponseSuccessMatrix` Account credentials for first-party app setup. - `AccessToken string` Beeper account access token. Returned once for first-party app setup. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Session AppLoginResponseResponseSuccessSession` Current app sign-in and encrypted messaging setup state after sign-in. - `E2EE AppLoginResponseResponseSuccessSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppLoginResponseResponseSuccessSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppLoginResponseResponseSuccessSessionStateNeedsLogin AppLoginResponseResponseSuccessSessionState = "needs-login"` - `const AppLoginResponseResponseSuccessSessionStateInitializing AppLoginResponseResponseSuccessSessionState = "initializing"` - `const AppLoginResponseResponseSuccessSessionStateNeedsCrossSigningSetup AppLoginResponseResponseSuccessSessionState = "needs-cross-signing-setup"` - `const AppLoginResponseResponseSuccessSessionStateNeedsVerification AppLoginResponseResponseSuccessSessionState = "needs-verification"` - `const AppLoginResponseResponseSuccessSessionStateNeedsSecrets AppLoginResponseResponseSuccessSessionState = "needs-secrets"` - `const AppLoginResponseResponseSuccessSessionStateNeedsFirstSync AppLoginResponseResponseSuccessSessionState = "needs-first-sync"` - `const AppLoginResponseResponseSuccessSessionStateReady AppLoginResponseResponseSuccessSessionState = "ready"` - `Matrix AppLoginResponseResponseSuccessSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppLoginResponseResponseSuccessSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppLoginResponseResponseSuccessSessionVerificationAvailableActionAccept AppLoginResponseResponseSuccessSessionVerificationAvailableAction = "accept"` - `const AppLoginResponseResponseSuccessSessionVerificationAvailableActionCancel AppLoginResponseResponseSuccessSessionVerificationAvailableAction = "cancel"` - `const AppLoginResponseResponseSuccessSessionVerificationAvailableActionQrConfirmScanned AppLoginResponseResponseSuccessSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppLoginResponseResponseSuccessSessionVerificationAvailableActionSASStart AppLoginResponseResponseSuccessSessionVerificationAvailableAction = "sas.start"` - `const AppLoginResponseResponseSuccessSessionVerificationAvailableActionSASConfirm AppLoginResponseResponseSuccessSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppLoginResponseResponseSuccessSessionVerificationDirectionIncoming AppLoginResponseResponseSuccessSessionVerificationDirection = "incoming"` - `const AppLoginResponseResponseSuccessSessionVerificationDirectionOutgoing AppLoginResponseResponseSuccessSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppLoginResponseResponseSuccessSessionVerificationMethodQr AppLoginResponseResponseSuccessSessionVerificationMethod = "qr"` - `const AppLoginResponseResponseSuccessSessionVerificationMethodSAS AppLoginResponseResponseSuccessSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppLoginResponseResponseSuccessSessionVerificationPurposeLogin AppLoginResponseResponseSuccessSessionVerificationPurpose = "login"` - `const AppLoginResponseResponseSuccessSessionVerificationPurposeDevice AppLoginResponseResponseSuccessSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppLoginResponseResponseSuccessSessionVerificationStateRequested AppLoginResponseResponseSuccessSessionVerificationState = "requested"` - `const AppLoginResponseResponseSuccessSessionVerificationStateReady AppLoginResponseResponseSuccessSessionVerificationState = "ready"` - `const AppLoginResponseResponseSuccessSessionVerificationStateSASReady AppLoginResponseResponseSuccessSessionVerificationState = "sas_ready"` - `const AppLoginResponseResponseSuccessSessionVerificationStateQrScanned AppLoginResponseResponseSuccessSessionVerificationState = "qr_scanned"` - `const AppLoginResponseResponseSuccessSessionVerificationStateDone AppLoginResponseResponseSuccessSessionVerificationState = "done"` - `const AppLoginResponseResponseSuccessSessionVerificationStateCancelled AppLoginResponseResponseSuccessSessionVerificationState = "cancelled"` - `const AppLoginResponseResponseSuccessSessionVerificationStateError AppLoginResponseResponseSuccessSessionVerificationState = "error"` - `Error AppLoginResponseResponseSuccessSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppLoginResponseResponseSuccessSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppLoginResponseResponseSuccessSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppLoginResponseResponseSuccessSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `type AppLoginResponseResponseRegistrationRequired struct{…}` - `Copy AppLoginResponseResponseRegistrationRequiredCopy` Copy to display during account creation. - `Submit Continue` Submit button label. - `const ContinueContinue Continue = "Continue"` - `Terms ByContinuingYouAgreeToTheTermsOfUseAndAcknowledgeThePrivacyPolicy` Terms and privacy notice to show before account creation. - `const ByContinuingYouAgreeToTheTermsOfUseAndAcknowledgeThePrivacyPolicyByContinuingYouAgreeToTheTermsOfUseAndAcknowledgeThePrivacyPolicy ByContinuingYouAgreeToTheTermsOfUseAndAcknowledgeThePrivacyPolicy = "By continuing, you agree to the Terms of Use and acknowledge the Privacy Policy."` - `Title ChooseYourUsername` Title for the username step. - `const ChooseYourUsernameChooseYourUsername ChooseYourUsername = "Choose your username"` - `UsernamePlaceholder Username` Placeholder for the username field. - `const UsernameUsername Username = "Username"` - `LeadToken string` Registration token returned by Beeper. - `RegistrationRequired bool` Indicates that the user needs to create a Beeper account. - `const AppLoginResponseResponseRegistrationRequiredRegistrationRequiredTrue AppLoginResponseResponseRegistrationRequiredRegistrationRequired = true` - `SetupRequestID string` Setup request ID to use when creating the account. - `UsernameSuggestions []string` Suggested usernames for the new account. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Login.Response(context.TODO(), beeperdesktopapi.AppLoginResponseParams{ Response: "response", SetupRequestID: "setupRequestID", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response) } ``` #### Response ```json { "matrix": { "accessToken": "accessToken", "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` ## Create account for setup `client.App.Login.Register(ctx, body) (*AppLoginRegisterResponse, error)` **post** `/v1/app/setup/register` Create a Beeper account after the user chooses a username and accepts the Terms of Use. ### Parameters - `body AppLoginRegisterParams` - `AcceptTerms param.Field[bool]` Confirms that the user agreed to our [terms of use](https://www.beeper.com/terms-onboarding) and has read our [privacy policy](https://www.beeper.com/privacy). - `const AppLoginRegisterParamsAcceptTermsTrue AppLoginRegisterParamsAcceptTerms = true` - `LeadToken param.Field[string]` Registration token returned by Beeper. - `SetupRequestID param.Field[string]` Setup request ID returned by the start step. - `Username param.Field[string]` Username selected by the user. ### Returns - `type AppLoginRegisterResponse struct{…}` - `Matrix AppLoginRegisterResponseMatrix` Account credentials for first-party app setup. - `AccessToken string` Beeper account access token. Returned once for first-party app setup. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Session AppLoginRegisterResponseSession` Current app sign-in and encrypted messaging setup state after sign-in. - `E2EE AppLoginRegisterResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppLoginRegisterResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppLoginRegisterResponseSessionStateNeedsLogin AppLoginRegisterResponseSessionState = "needs-login"` - `const AppLoginRegisterResponseSessionStateInitializing AppLoginRegisterResponseSessionState = "initializing"` - `const AppLoginRegisterResponseSessionStateNeedsCrossSigningSetup AppLoginRegisterResponseSessionState = "needs-cross-signing-setup"` - `const AppLoginRegisterResponseSessionStateNeedsVerification AppLoginRegisterResponseSessionState = "needs-verification"` - `const AppLoginRegisterResponseSessionStateNeedsSecrets AppLoginRegisterResponseSessionState = "needs-secrets"` - `const AppLoginRegisterResponseSessionStateNeedsFirstSync AppLoginRegisterResponseSessionState = "needs-first-sync"` - `const AppLoginRegisterResponseSessionStateReady AppLoginRegisterResponseSessionState = "ready"` - `Matrix AppLoginRegisterResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppLoginRegisterResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppLoginRegisterResponseSessionVerificationAvailableActionAccept AppLoginRegisterResponseSessionVerificationAvailableAction = "accept"` - `const AppLoginRegisterResponseSessionVerificationAvailableActionCancel AppLoginRegisterResponseSessionVerificationAvailableAction = "cancel"` - `const AppLoginRegisterResponseSessionVerificationAvailableActionQrConfirmScanned AppLoginRegisterResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppLoginRegisterResponseSessionVerificationAvailableActionSASStart AppLoginRegisterResponseSessionVerificationAvailableAction = "sas.start"` - `const AppLoginRegisterResponseSessionVerificationAvailableActionSASConfirm AppLoginRegisterResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppLoginRegisterResponseSessionVerificationDirectionIncoming AppLoginRegisterResponseSessionVerificationDirection = "incoming"` - `const AppLoginRegisterResponseSessionVerificationDirectionOutgoing AppLoginRegisterResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppLoginRegisterResponseSessionVerificationMethodQr AppLoginRegisterResponseSessionVerificationMethod = "qr"` - `const AppLoginRegisterResponseSessionVerificationMethodSAS AppLoginRegisterResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppLoginRegisterResponseSessionVerificationPurposeLogin AppLoginRegisterResponseSessionVerificationPurpose = "login"` - `const AppLoginRegisterResponseSessionVerificationPurposeDevice AppLoginRegisterResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppLoginRegisterResponseSessionVerificationStateRequested AppLoginRegisterResponseSessionVerificationState = "requested"` - `const AppLoginRegisterResponseSessionVerificationStateReady AppLoginRegisterResponseSessionVerificationState = "ready"` - `const AppLoginRegisterResponseSessionVerificationStateSASReady AppLoginRegisterResponseSessionVerificationState = "sas_ready"` - `const AppLoginRegisterResponseSessionVerificationStateQrScanned AppLoginRegisterResponseSessionVerificationState = "qr_scanned"` - `const AppLoginRegisterResponseSessionVerificationStateDone AppLoginRegisterResponseSessionVerificationState = "done"` - `const AppLoginRegisterResponseSessionVerificationStateCancelled AppLoginRegisterResponseSessionVerificationState = "cancelled"` - `const AppLoginRegisterResponseSessionVerificationStateError AppLoginRegisterResponseSessionVerificationState = "error"` - `Error AppLoginRegisterResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppLoginRegisterResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppLoginRegisterResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppLoginRegisterResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Login.Register(context.TODO(), beeperdesktopapi.AppLoginRegisterParams{ AcceptTerms: true, LeadToken: "leadToken", SetupRequestID: "setupRequestID", Username: "x", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Matrix) } ``` #### Response ```json { "matrix": { "accessToken": "accessToken", "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` # Verification # Recovery Key ## Verify with recovery key `client.App.Login.Verification.RecoveryKey.Verify(ctx, body) (*AppLoginVerificationRecoveryKeyVerifyResponse, error)` **post** `/v1/app/setup/verification/recovery-key` Unlock encrypted messages with the user recovery key. ### Parameters - `body AppLoginVerificationRecoveryKeyVerifyParams` - `RecoveryKey param.Field[string]` Recovery key saved by the user. ### Returns - `type AppLoginVerificationRecoveryKeyVerifyResponse struct{…}` - `Session AppLoginVerificationRecoveryKeyVerifyResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppLoginVerificationRecoveryKeyVerifyResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppLoginVerificationRecoveryKeyVerifyResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateNeedsLogin AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "needs-login"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateInitializing AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "initializing"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateNeedsCrossSigningSetup AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "needs-cross-signing-setup"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateNeedsVerification AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "needs-verification"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateNeedsSecrets AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "needs-secrets"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateNeedsFirstSync AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "needs-first-sync"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionStateReady AppLoginVerificationRecoveryKeyVerifyResponseSessionState = "ready"` - `Matrix AppLoginVerificationRecoveryKeyVerifyResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppLoginVerificationRecoveryKeyVerifyResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableActionAccept AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableAction = "accept"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableActionCancel AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableAction = "cancel"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableActionQrConfirmScanned AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableActionSASStart AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableAction = "sas.start"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableActionSASConfirm AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationDirectionIncoming AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationDirection = "incoming"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationDirectionOutgoing AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationMethodQr AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationMethod = "qr"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationMethodSAS AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationPurposeLogin AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationPurpose = "login"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationPurposeDevice AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateRequested AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "requested"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateReady AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "ready"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateSASReady AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "sas_ready"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateQrScanned AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "qr_scanned"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateDone AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "done"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateCancelled AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "cancelled"` - `const AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationStateError AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationState = "error"` - `Error AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppLoginVerificationRecoveryKeyVerifyResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Login.Verification.RecoveryKey.Verify(context.TODO(), beeperdesktopapi.AppLoginVerificationRecoveryKeyVerifyParams{ RecoveryKey: "x", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` # Reset ## Create new recovery key `client.App.Login.Verification.RecoveryKey.Reset.New(ctx, body) (*AppLoginVerificationRecoveryKeyResetNewResponse, error)` **post** `/v1/app/setup/verification/recovery-key/reset` Create a new recovery key when the user cannot use the existing one. ### Parameters - `body AppLoginVerificationRecoveryKeyResetNewParams` - `ExistingRecoveryKey param.Field[string]` Existing recovery key, if the user has it. ### Returns - `type AppLoginVerificationRecoveryKeyResetNewResponse struct{…}` - `RecoveryKey string` New recovery key. Show it once and ask the user to save it. - `Session AppLoginVerificationRecoveryKeyResetNewResponseSession` Current app sign-in and encrypted messaging setup state after creating the new recovery key. - `E2EE AppLoginVerificationRecoveryKeyResetNewResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppLoginVerificationRecoveryKeyResetNewResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateNeedsLogin AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "needs-login"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateInitializing AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "initializing"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateNeedsCrossSigningSetup AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "needs-cross-signing-setup"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateNeedsVerification AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "needs-verification"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateNeedsSecrets AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "needs-secrets"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateNeedsFirstSync AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "needs-first-sync"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionStateReady AppLoginVerificationRecoveryKeyResetNewResponseSessionState = "ready"` - `Matrix AppLoginVerificationRecoveryKeyResetNewResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppLoginVerificationRecoveryKeyResetNewResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableActionAccept AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableAction = "accept"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableActionCancel AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableAction = "cancel"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableActionQrConfirmScanned AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableActionSASStart AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableAction = "sas.start"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableActionSASConfirm AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationDirectionIncoming AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationDirection = "incoming"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationDirectionOutgoing AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationMethodQr AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationMethod = "qr"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationMethodSAS AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationPurposeLogin AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationPurpose = "login"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationPurposeDevice AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateRequested AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "requested"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateReady AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "ready"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateSASReady AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "sas_ready"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateQrScanned AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "qr_scanned"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateDone AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "done"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateCancelled AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "cancelled"` - `const AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationStateError AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationState = "error"` - `Error AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppLoginVerificationRecoveryKeyResetNewResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) reset, err := client.App.Login.Verification.RecoveryKey.Reset.New(context.TODO(), beeperdesktopapi.AppLoginVerificationRecoveryKeyResetNewParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", reset.RecoveryKey) } ``` #### Response ```json { "recoveryKey": "recoveryKey", "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` ## Confirm new recovery key `client.App.Login.Verification.RecoveryKey.Reset.Confirm(ctx, body) (*AppLoginVerificationRecoveryKeyResetConfirmResponse, error)` **post** `/v1/app/setup/verification/recovery-key/reset/confirm` Confirm that the new recovery key should be used for this account. ### Parameters - `body AppLoginVerificationRecoveryKeyResetConfirmParams` - `RecoveryKey param.Field[string]` New recovery key returned by the reset step. ### Returns - `type AppLoginVerificationRecoveryKeyResetConfirmResponse struct{…}` - `Session AppLoginVerificationRecoveryKeyResetConfirmResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppLoginVerificationRecoveryKeyResetConfirmResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppLoginVerificationRecoveryKeyResetConfirmResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateNeedsLogin AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "needs-login"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateInitializing AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "initializing"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateNeedsCrossSigningSetup AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "needs-cross-signing-setup"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateNeedsVerification AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "needs-verification"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateNeedsSecrets AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "needs-secrets"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateNeedsFirstSync AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "needs-first-sync"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionStateReady AppLoginVerificationRecoveryKeyResetConfirmResponseSessionState = "ready"` - `Matrix AppLoginVerificationRecoveryKeyResetConfirmResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableActionAccept AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableAction = "accept"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableActionCancel AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableAction = "cancel"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableActionQrConfirmScanned AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableActionSASStart AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableAction = "sas.start"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableActionSASConfirm AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationDirectionIncoming AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationDirection = "incoming"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationDirectionOutgoing AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationMethodQr AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationMethod = "qr"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationMethodSAS AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationPurposeLogin AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationPurpose = "login"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationPurposeDevice AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateRequested AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "requested"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateReady AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "ready"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateSASReady AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "sas_ready"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateQrScanned AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "qr_scanned"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateDone AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "done"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateCancelled AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "cancelled"` - `const AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationStateError AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationState = "error"` - `Error AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppLoginVerificationRecoveryKeyResetConfirmResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Login.Verification.RecoveryKey.Reset.Confirm(context.TODO(), beeperdesktopapi.AppLoginVerificationRecoveryKeyResetConfirmParams{ RecoveryKey: "x", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` # Verifications ## List active verifications `client.App.Verifications.List(ctx) (*AppVerificationListResponse, error)` **get** `/v1/app/setup/verifications` List pending and active device verifications. Use this to recover state without a WebSocket connection. ### Returns - `type AppVerificationListResponse struct{…}` - `Items []AppVerificationListResponseItem` - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationListResponseItemAvailableActionAccept AppVerificationListResponseItemAvailableAction = "accept"` - `const AppVerificationListResponseItemAvailableActionCancel AppVerificationListResponseItemAvailableAction = "cancel"` - `const AppVerificationListResponseItemAvailableActionQrConfirmScanned AppVerificationListResponseItemAvailableAction = "qr.confirmScanned"` - `const AppVerificationListResponseItemAvailableActionSASStart AppVerificationListResponseItemAvailableAction = "sas.start"` - `const AppVerificationListResponseItemAvailableActionSASConfirm AppVerificationListResponseItemAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationListResponseItemDirectionIncoming AppVerificationListResponseItemDirection = "incoming"` - `const AppVerificationListResponseItemDirectionOutgoing AppVerificationListResponseItemDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationListResponseItemMethodQr AppVerificationListResponseItemMethod = "qr"` - `const AppVerificationListResponseItemMethodSAS AppVerificationListResponseItemMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationListResponseItemPurposeLogin AppVerificationListResponseItemPurpose = "login"` - `const AppVerificationListResponseItemPurposeDevice AppVerificationListResponseItemPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationListResponseItemStateRequested AppVerificationListResponseItemState = "requested"` - `const AppVerificationListResponseItemStateReady AppVerificationListResponseItemState = "ready"` - `const AppVerificationListResponseItemStateSASReady AppVerificationListResponseItemState = "sas_ready"` - `const AppVerificationListResponseItemStateQrScanned AppVerificationListResponseItemState = "qr_scanned"` - `const AppVerificationListResponseItemStateDone AppVerificationListResponseItemState = "done"` - `const AppVerificationListResponseItemStateCancelled AppVerificationListResponseItemState = "cancelled"` - `const AppVerificationListResponseItemStateError AppVerificationListResponseItemState = "error"` - `Error AppVerificationListResponseItemError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationListResponseItemOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationListResponseItemQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationListResponseItemSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) verifications, err := client.App.Verifications.List(context.TODO()) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", verifications.Items) } ``` #### Response ```json { "items": [ { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } ] } ``` ## Start device verification `client.App.Verifications.New(ctx, body) (*AppVerificationNewResponse, error)` **post** `/v1/app/setup/verifications` Start verifying this device from another signed-in device. ### Parameters - `body AppVerificationNewParams` - `Purpose param.Field[AppVerificationNewParamsPurpose]` Why this verification is being started. - `const AppVerificationNewParamsPurposeLogin AppVerificationNewParamsPurpose = "login"` - `const AppVerificationNewParamsPurposeDevice AppVerificationNewParamsPurpose = "device"` - `UserID param.Field[string]` Beeper user ID to verify. Defaults to the signed-in user. ### Returns - `type AppVerificationNewResponse struct{…}` - `Session AppVerificationNewResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationNewResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationNewResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationNewResponseSessionStateNeedsLogin AppVerificationNewResponseSessionState = "needs-login"` - `const AppVerificationNewResponseSessionStateInitializing AppVerificationNewResponseSessionState = "initializing"` - `const AppVerificationNewResponseSessionStateNeedsCrossSigningSetup AppVerificationNewResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationNewResponseSessionStateNeedsVerification AppVerificationNewResponseSessionState = "needs-verification"` - `const AppVerificationNewResponseSessionStateNeedsSecrets AppVerificationNewResponseSessionState = "needs-secrets"` - `const AppVerificationNewResponseSessionStateNeedsFirstSync AppVerificationNewResponseSessionState = "needs-first-sync"` - `const AppVerificationNewResponseSessionStateReady AppVerificationNewResponseSessionState = "ready"` - `Matrix AppVerificationNewResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationNewResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationNewResponseSessionVerificationAvailableActionAccept AppVerificationNewResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationNewResponseSessionVerificationAvailableActionCancel AppVerificationNewResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationNewResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationNewResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationNewResponseSessionVerificationAvailableActionSASStart AppVerificationNewResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationNewResponseSessionVerificationAvailableActionSASConfirm AppVerificationNewResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationNewResponseSessionVerificationDirectionIncoming AppVerificationNewResponseSessionVerificationDirection = "incoming"` - `const AppVerificationNewResponseSessionVerificationDirectionOutgoing AppVerificationNewResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationNewResponseSessionVerificationMethodQr AppVerificationNewResponseSessionVerificationMethod = "qr"` - `const AppVerificationNewResponseSessionVerificationMethodSAS AppVerificationNewResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationNewResponseSessionVerificationPurposeLogin AppVerificationNewResponseSessionVerificationPurpose = "login"` - `const AppVerificationNewResponseSessionVerificationPurposeDevice AppVerificationNewResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationNewResponseSessionVerificationStateRequested AppVerificationNewResponseSessionVerificationState = "requested"` - `const AppVerificationNewResponseSessionVerificationStateReady AppVerificationNewResponseSessionVerificationState = "ready"` - `const AppVerificationNewResponseSessionVerificationStateSASReady AppVerificationNewResponseSessionVerificationState = "sas_ready"` - `const AppVerificationNewResponseSessionVerificationStateQrScanned AppVerificationNewResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationNewResponseSessionVerificationStateDone AppVerificationNewResponseSessionVerificationState = "done"` - `const AppVerificationNewResponseSessionVerificationStateCancelled AppVerificationNewResponseSessionVerificationState = "cancelled"` - `const AppVerificationNewResponseSessionVerificationStateError AppVerificationNewResponseSessionVerificationState = "error"` - `Error AppVerificationNewResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationNewResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationNewResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationNewResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationNewResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationNewResponseVerificationAvailableActionAccept AppVerificationNewResponseVerificationAvailableAction = "accept"` - `const AppVerificationNewResponseVerificationAvailableActionCancel AppVerificationNewResponseVerificationAvailableAction = "cancel"` - `const AppVerificationNewResponseVerificationAvailableActionQrConfirmScanned AppVerificationNewResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationNewResponseVerificationAvailableActionSASStart AppVerificationNewResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationNewResponseVerificationAvailableActionSASConfirm AppVerificationNewResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationNewResponseVerificationDirectionIncoming AppVerificationNewResponseVerificationDirection = "incoming"` - `const AppVerificationNewResponseVerificationDirectionOutgoing AppVerificationNewResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationNewResponseVerificationMethodQr AppVerificationNewResponseVerificationMethod = "qr"` - `const AppVerificationNewResponseVerificationMethodSAS AppVerificationNewResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationNewResponseVerificationPurposeLogin AppVerificationNewResponseVerificationPurpose = "login"` - `const AppVerificationNewResponseVerificationPurposeDevice AppVerificationNewResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationNewResponseVerificationStateRequested AppVerificationNewResponseVerificationState = "requested"` - `const AppVerificationNewResponseVerificationStateReady AppVerificationNewResponseVerificationState = "ready"` - `const AppVerificationNewResponseVerificationStateSASReady AppVerificationNewResponseVerificationState = "sas_ready"` - `const AppVerificationNewResponseVerificationStateQrScanned AppVerificationNewResponseVerificationState = "qr_scanned"` - `const AppVerificationNewResponseVerificationStateDone AppVerificationNewResponseVerificationState = "done"` - `const AppVerificationNewResponseVerificationStateCancelled AppVerificationNewResponseVerificationState = "cancelled"` - `const AppVerificationNewResponseVerificationStateError AppVerificationNewResponseVerificationState = "error"` - `Error AppVerificationNewResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationNewResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationNewResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationNewResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) verification, err := client.App.Verifications.New(context.TODO(), beeperdesktopapi.AppVerificationNewParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", verification.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Get verification `client.App.Verifications.Get(ctx, verificationID) (*AppVerificationGetResponse, error)` **get** `/v1/app/setup/verifications/{verificationID}` Get the current state of a device verification transaction. ### Parameters - `verificationID string` Verification ID. ### Returns - `type AppVerificationGetResponse struct{…}` - `Session AppVerificationGetResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationGetResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationGetResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationGetResponseSessionStateNeedsLogin AppVerificationGetResponseSessionState = "needs-login"` - `const AppVerificationGetResponseSessionStateInitializing AppVerificationGetResponseSessionState = "initializing"` - `const AppVerificationGetResponseSessionStateNeedsCrossSigningSetup AppVerificationGetResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationGetResponseSessionStateNeedsVerification AppVerificationGetResponseSessionState = "needs-verification"` - `const AppVerificationGetResponseSessionStateNeedsSecrets AppVerificationGetResponseSessionState = "needs-secrets"` - `const AppVerificationGetResponseSessionStateNeedsFirstSync AppVerificationGetResponseSessionState = "needs-first-sync"` - `const AppVerificationGetResponseSessionStateReady AppVerificationGetResponseSessionState = "ready"` - `Matrix AppVerificationGetResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationGetResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationGetResponseSessionVerificationAvailableActionAccept AppVerificationGetResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationGetResponseSessionVerificationAvailableActionCancel AppVerificationGetResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationGetResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationGetResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationGetResponseSessionVerificationAvailableActionSASStart AppVerificationGetResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationGetResponseSessionVerificationAvailableActionSASConfirm AppVerificationGetResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationGetResponseSessionVerificationDirectionIncoming AppVerificationGetResponseSessionVerificationDirection = "incoming"` - `const AppVerificationGetResponseSessionVerificationDirectionOutgoing AppVerificationGetResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationGetResponseSessionVerificationMethodQr AppVerificationGetResponseSessionVerificationMethod = "qr"` - `const AppVerificationGetResponseSessionVerificationMethodSAS AppVerificationGetResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationGetResponseSessionVerificationPurposeLogin AppVerificationGetResponseSessionVerificationPurpose = "login"` - `const AppVerificationGetResponseSessionVerificationPurposeDevice AppVerificationGetResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationGetResponseSessionVerificationStateRequested AppVerificationGetResponseSessionVerificationState = "requested"` - `const AppVerificationGetResponseSessionVerificationStateReady AppVerificationGetResponseSessionVerificationState = "ready"` - `const AppVerificationGetResponseSessionVerificationStateSASReady AppVerificationGetResponseSessionVerificationState = "sas_ready"` - `const AppVerificationGetResponseSessionVerificationStateQrScanned AppVerificationGetResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationGetResponseSessionVerificationStateDone AppVerificationGetResponseSessionVerificationState = "done"` - `const AppVerificationGetResponseSessionVerificationStateCancelled AppVerificationGetResponseSessionVerificationState = "cancelled"` - `const AppVerificationGetResponseSessionVerificationStateError AppVerificationGetResponseSessionVerificationState = "error"` - `Error AppVerificationGetResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationGetResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationGetResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationGetResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationGetResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationGetResponseVerificationAvailableActionAccept AppVerificationGetResponseVerificationAvailableAction = "accept"` - `const AppVerificationGetResponseVerificationAvailableActionCancel AppVerificationGetResponseVerificationAvailableAction = "cancel"` - `const AppVerificationGetResponseVerificationAvailableActionQrConfirmScanned AppVerificationGetResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationGetResponseVerificationAvailableActionSASStart AppVerificationGetResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationGetResponseVerificationAvailableActionSASConfirm AppVerificationGetResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationGetResponseVerificationDirectionIncoming AppVerificationGetResponseVerificationDirection = "incoming"` - `const AppVerificationGetResponseVerificationDirectionOutgoing AppVerificationGetResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationGetResponseVerificationMethodQr AppVerificationGetResponseVerificationMethod = "qr"` - `const AppVerificationGetResponseVerificationMethodSAS AppVerificationGetResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationGetResponseVerificationPurposeLogin AppVerificationGetResponseVerificationPurpose = "login"` - `const AppVerificationGetResponseVerificationPurposeDevice AppVerificationGetResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationGetResponseVerificationStateRequested AppVerificationGetResponseVerificationState = "requested"` - `const AppVerificationGetResponseVerificationStateReady AppVerificationGetResponseVerificationState = "ready"` - `const AppVerificationGetResponseVerificationStateSASReady AppVerificationGetResponseVerificationState = "sas_ready"` - `const AppVerificationGetResponseVerificationStateQrScanned AppVerificationGetResponseVerificationState = "qr_scanned"` - `const AppVerificationGetResponseVerificationStateDone AppVerificationGetResponseVerificationState = "done"` - `const AppVerificationGetResponseVerificationStateCancelled AppVerificationGetResponseVerificationState = "cancelled"` - `const AppVerificationGetResponseVerificationStateError AppVerificationGetResponseVerificationState = "error"` - `Error AppVerificationGetResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationGetResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationGetResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationGetResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) verification, err := client.App.Verifications.Get(context.TODO(), "x") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", verification.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Accept device verification `client.App.Verifications.Accept(ctx, verificationID) (*AppVerificationAcceptResponse, error)` **post** `/v1/app/setup/verifications/{verificationID}/accept` Accept an incoming device verification request. ### Parameters - `verificationID string` Verification ID. ### Returns - `type AppVerificationAcceptResponse struct{…}` - `Session AppVerificationAcceptResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationAcceptResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationAcceptResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationAcceptResponseSessionStateNeedsLogin AppVerificationAcceptResponseSessionState = "needs-login"` - `const AppVerificationAcceptResponseSessionStateInitializing AppVerificationAcceptResponseSessionState = "initializing"` - `const AppVerificationAcceptResponseSessionStateNeedsCrossSigningSetup AppVerificationAcceptResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationAcceptResponseSessionStateNeedsVerification AppVerificationAcceptResponseSessionState = "needs-verification"` - `const AppVerificationAcceptResponseSessionStateNeedsSecrets AppVerificationAcceptResponseSessionState = "needs-secrets"` - `const AppVerificationAcceptResponseSessionStateNeedsFirstSync AppVerificationAcceptResponseSessionState = "needs-first-sync"` - `const AppVerificationAcceptResponseSessionStateReady AppVerificationAcceptResponseSessionState = "ready"` - `Matrix AppVerificationAcceptResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationAcceptResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationAcceptResponseSessionVerificationAvailableActionAccept AppVerificationAcceptResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationAcceptResponseSessionVerificationAvailableActionCancel AppVerificationAcceptResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationAcceptResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationAcceptResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationAcceptResponseSessionVerificationAvailableActionSASStart AppVerificationAcceptResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationAcceptResponseSessionVerificationAvailableActionSASConfirm AppVerificationAcceptResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationAcceptResponseSessionVerificationDirectionIncoming AppVerificationAcceptResponseSessionVerificationDirection = "incoming"` - `const AppVerificationAcceptResponseSessionVerificationDirectionOutgoing AppVerificationAcceptResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationAcceptResponseSessionVerificationMethodQr AppVerificationAcceptResponseSessionVerificationMethod = "qr"` - `const AppVerificationAcceptResponseSessionVerificationMethodSAS AppVerificationAcceptResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationAcceptResponseSessionVerificationPurposeLogin AppVerificationAcceptResponseSessionVerificationPurpose = "login"` - `const AppVerificationAcceptResponseSessionVerificationPurposeDevice AppVerificationAcceptResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationAcceptResponseSessionVerificationStateRequested AppVerificationAcceptResponseSessionVerificationState = "requested"` - `const AppVerificationAcceptResponseSessionVerificationStateReady AppVerificationAcceptResponseSessionVerificationState = "ready"` - `const AppVerificationAcceptResponseSessionVerificationStateSASReady AppVerificationAcceptResponseSessionVerificationState = "sas_ready"` - `const AppVerificationAcceptResponseSessionVerificationStateQrScanned AppVerificationAcceptResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationAcceptResponseSessionVerificationStateDone AppVerificationAcceptResponseSessionVerificationState = "done"` - `const AppVerificationAcceptResponseSessionVerificationStateCancelled AppVerificationAcceptResponseSessionVerificationState = "cancelled"` - `const AppVerificationAcceptResponseSessionVerificationStateError AppVerificationAcceptResponseSessionVerificationState = "error"` - `Error AppVerificationAcceptResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationAcceptResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationAcceptResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationAcceptResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationAcceptResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationAcceptResponseVerificationAvailableActionAccept AppVerificationAcceptResponseVerificationAvailableAction = "accept"` - `const AppVerificationAcceptResponseVerificationAvailableActionCancel AppVerificationAcceptResponseVerificationAvailableAction = "cancel"` - `const AppVerificationAcceptResponseVerificationAvailableActionQrConfirmScanned AppVerificationAcceptResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationAcceptResponseVerificationAvailableActionSASStart AppVerificationAcceptResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationAcceptResponseVerificationAvailableActionSASConfirm AppVerificationAcceptResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationAcceptResponseVerificationDirectionIncoming AppVerificationAcceptResponseVerificationDirection = "incoming"` - `const AppVerificationAcceptResponseVerificationDirectionOutgoing AppVerificationAcceptResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationAcceptResponseVerificationMethodQr AppVerificationAcceptResponseVerificationMethod = "qr"` - `const AppVerificationAcceptResponseVerificationMethodSAS AppVerificationAcceptResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationAcceptResponseVerificationPurposeLogin AppVerificationAcceptResponseVerificationPurpose = "login"` - `const AppVerificationAcceptResponseVerificationPurposeDevice AppVerificationAcceptResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationAcceptResponseVerificationStateRequested AppVerificationAcceptResponseVerificationState = "requested"` - `const AppVerificationAcceptResponseVerificationStateReady AppVerificationAcceptResponseVerificationState = "ready"` - `const AppVerificationAcceptResponseVerificationStateSASReady AppVerificationAcceptResponseVerificationState = "sas_ready"` - `const AppVerificationAcceptResponseVerificationStateQrScanned AppVerificationAcceptResponseVerificationState = "qr_scanned"` - `const AppVerificationAcceptResponseVerificationStateDone AppVerificationAcceptResponseVerificationState = "done"` - `const AppVerificationAcceptResponseVerificationStateCancelled AppVerificationAcceptResponseVerificationState = "cancelled"` - `const AppVerificationAcceptResponseVerificationStateError AppVerificationAcceptResponseVerificationState = "error"` - `Error AppVerificationAcceptResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationAcceptResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationAcceptResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationAcceptResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.Accept(context.TODO(), "x") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Cancel device verification `client.App.Verifications.Cancel(ctx, verificationID, body) (*AppVerificationCancelResponse, error)` **post** `/v1/app/setup/verifications/{verificationID}/cancel` Cancel an active device verification request. ### Parameters - `verificationID string` Verification ID. - `body AppVerificationCancelParams` - `Code param.Field[string]` Optional cancellation code. - `Reason param.Field[string]` Optional user-facing cancellation reason. ### Returns - `type AppVerificationCancelResponse struct{…}` - `Session AppVerificationCancelResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationCancelResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationCancelResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationCancelResponseSessionStateNeedsLogin AppVerificationCancelResponseSessionState = "needs-login"` - `const AppVerificationCancelResponseSessionStateInitializing AppVerificationCancelResponseSessionState = "initializing"` - `const AppVerificationCancelResponseSessionStateNeedsCrossSigningSetup AppVerificationCancelResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationCancelResponseSessionStateNeedsVerification AppVerificationCancelResponseSessionState = "needs-verification"` - `const AppVerificationCancelResponseSessionStateNeedsSecrets AppVerificationCancelResponseSessionState = "needs-secrets"` - `const AppVerificationCancelResponseSessionStateNeedsFirstSync AppVerificationCancelResponseSessionState = "needs-first-sync"` - `const AppVerificationCancelResponseSessionStateReady AppVerificationCancelResponseSessionState = "ready"` - `Matrix AppVerificationCancelResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationCancelResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationCancelResponseSessionVerificationAvailableActionAccept AppVerificationCancelResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationCancelResponseSessionVerificationAvailableActionCancel AppVerificationCancelResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationCancelResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationCancelResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationCancelResponseSessionVerificationAvailableActionSASStart AppVerificationCancelResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationCancelResponseSessionVerificationAvailableActionSASConfirm AppVerificationCancelResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationCancelResponseSessionVerificationDirectionIncoming AppVerificationCancelResponseSessionVerificationDirection = "incoming"` - `const AppVerificationCancelResponseSessionVerificationDirectionOutgoing AppVerificationCancelResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationCancelResponseSessionVerificationMethodQr AppVerificationCancelResponseSessionVerificationMethod = "qr"` - `const AppVerificationCancelResponseSessionVerificationMethodSAS AppVerificationCancelResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationCancelResponseSessionVerificationPurposeLogin AppVerificationCancelResponseSessionVerificationPurpose = "login"` - `const AppVerificationCancelResponseSessionVerificationPurposeDevice AppVerificationCancelResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationCancelResponseSessionVerificationStateRequested AppVerificationCancelResponseSessionVerificationState = "requested"` - `const AppVerificationCancelResponseSessionVerificationStateReady AppVerificationCancelResponseSessionVerificationState = "ready"` - `const AppVerificationCancelResponseSessionVerificationStateSASReady AppVerificationCancelResponseSessionVerificationState = "sas_ready"` - `const AppVerificationCancelResponseSessionVerificationStateQrScanned AppVerificationCancelResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationCancelResponseSessionVerificationStateDone AppVerificationCancelResponseSessionVerificationState = "done"` - `const AppVerificationCancelResponseSessionVerificationStateCancelled AppVerificationCancelResponseSessionVerificationState = "cancelled"` - `const AppVerificationCancelResponseSessionVerificationStateError AppVerificationCancelResponseSessionVerificationState = "error"` - `Error AppVerificationCancelResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationCancelResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationCancelResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationCancelResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationCancelResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationCancelResponseVerificationAvailableActionAccept AppVerificationCancelResponseVerificationAvailableAction = "accept"` - `const AppVerificationCancelResponseVerificationAvailableActionCancel AppVerificationCancelResponseVerificationAvailableAction = "cancel"` - `const AppVerificationCancelResponseVerificationAvailableActionQrConfirmScanned AppVerificationCancelResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationCancelResponseVerificationAvailableActionSASStart AppVerificationCancelResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationCancelResponseVerificationAvailableActionSASConfirm AppVerificationCancelResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationCancelResponseVerificationDirectionIncoming AppVerificationCancelResponseVerificationDirection = "incoming"` - `const AppVerificationCancelResponseVerificationDirectionOutgoing AppVerificationCancelResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationCancelResponseVerificationMethodQr AppVerificationCancelResponseVerificationMethod = "qr"` - `const AppVerificationCancelResponseVerificationMethodSAS AppVerificationCancelResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationCancelResponseVerificationPurposeLogin AppVerificationCancelResponseVerificationPurpose = "login"` - `const AppVerificationCancelResponseVerificationPurposeDevice AppVerificationCancelResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationCancelResponseVerificationStateRequested AppVerificationCancelResponseVerificationState = "requested"` - `const AppVerificationCancelResponseVerificationStateReady AppVerificationCancelResponseVerificationState = "ready"` - `const AppVerificationCancelResponseVerificationStateSASReady AppVerificationCancelResponseVerificationState = "sas_ready"` - `const AppVerificationCancelResponseVerificationStateQrScanned AppVerificationCancelResponseVerificationState = "qr_scanned"` - `const AppVerificationCancelResponseVerificationStateDone AppVerificationCancelResponseVerificationState = "done"` - `const AppVerificationCancelResponseVerificationStateCancelled AppVerificationCancelResponseVerificationState = "cancelled"` - `const AppVerificationCancelResponseVerificationStateError AppVerificationCancelResponseVerificationState = "error"` - `Error AppVerificationCancelResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationCancelResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationCancelResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationCancelResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.Cancel( context.TODO(), "x", beeperdesktopapi.AppVerificationCancelParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` # Qr ## Scan verification QR code `client.App.Verifications.Qr.Scan(ctx, body) (*AppVerificationQrScanResponse, error)` **post** `/v1/app/setup/verifications/qr/scan` Submit the QR code scanned from another signed-in device. ### Parameters - `body AppVerificationQrScanParams` - `Data param.Field[string]` QR code payload scanned from the other device. ### Returns - `type AppVerificationQrScanResponse struct{…}` - `Session AppVerificationQrScanResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationQrScanResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationQrScanResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationQrScanResponseSessionStateNeedsLogin AppVerificationQrScanResponseSessionState = "needs-login"` - `const AppVerificationQrScanResponseSessionStateInitializing AppVerificationQrScanResponseSessionState = "initializing"` - `const AppVerificationQrScanResponseSessionStateNeedsCrossSigningSetup AppVerificationQrScanResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationQrScanResponseSessionStateNeedsVerification AppVerificationQrScanResponseSessionState = "needs-verification"` - `const AppVerificationQrScanResponseSessionStateNeedsSecrets AppVerificationQrScanResponseSessionState = "needs-secrets"` - `const AppVerificationQrScanResponseSessionStateNeedsFirstSync AppVerificationQrScanResponseSessionState = "needs-first-sync"` - `const AppVerificationQrScanResponseSessionStateReady AppVerificationQrScanResponseSessionState = "ready"` - `Matrix AppVerificationQrScanResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationQrScanResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationQrScanResponseSessionVerificationAvailableActionAccept AppVerificationQrScanResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationQrScanResponseSessionVerificationAvailableActionCancel AppVerificationQrScanResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationQrScanResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationQrScanResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationQrScanResponseSessionVerificationAvailableActionSASStart AppVerificationQrScanResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationQrScanResponseSessionVerificationAvailableActionSASConfirm AppVerificationQrScanResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationQrScanResponseSessionVerificationDirectionIncoming AppVerificationQrScanResponseSessionVerificationDirection = "incoming"` - `const AppVerificationQrScanResponseSessionVerificationDirectionOutgoing AppVerificationQrScanResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationQrScanResponseSessionVerificationMethodQr AppVerificationQrScanResponseSessionVerificationMethod = "qr"` - `const AppVerificationQrScanResponseSessionVerificationMethodSAS AppVerificationQrScanResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationQrScanResponseSessionVerificationPurposeLogin AppVerificationQrScanResponseSessionVerificationPurpose = "login"` - `const AppVerificationQrScanResponseSessionVerificationPurposeDevice AppVerificationQrScanResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationQrScanResponseSessionVerificationStateRequested AppVerificationQrScanResponseSessionVerificationState = "requested"` - `const AppVerificationQrScanResponseSessionVerificationStateReady AppVerificationQrScanResponseSessionVerificationState = "ready"` - `const AppVerificationQrScanResponseSessionVerificationStateSASReady AppVerificationQrScanResponseSessionVerificationState = "sas_ready"` - `const AppVerificationQrScanResponseSessionVerificationStateQrScanned AppVerificationQrScanResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationQrScanResponseSessionVerificationStateDone AppVerificationQrScanResponseSessionVerificationState = "done"` - `const AppVerificationQrScanResponseSessionVerificationStateCancelled AppVerificationQrScanResponseSessionVerificationState = "cancelled"` - `const AppVerificationQrScanResponseSessionVerificationStateError AppVerificationQrScanResponseSessionVerificationState = "error"` - `Error AppVerificationQrScanResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationQrScanResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationQrScanResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationQrScanResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationQrScanResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationQrScanResponseVerificationAvailableActionAccept AppVerificationQrScanResponseVerificationAvailableAction = "accept"` - `const AppVerificationQrScanResponseVerificationAvailableActionCancel AppVerificationQrScanResponseVerificationAvailableAction = "cancel"` - `const AppVerificationQrScanResponseVerificationAvailableActionQrConfirmScanned AppVerificationQrScanResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationQrScanResponseVerificationAvailableActionSASStart AppVerificationQrScanResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationQrScanResponseVerificationAvailableActionSASConfirm AppVerificationQrScanResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationQrScanResponseVerificationDirectionIncoming AppVerificationQrScanResponseVerificationDirection = "incoming"` - `const AppVerificationQrScanResponseVerificationDirectionOutgoing AppVerificationQrScanResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationQrScanResponseVerificationMethodQr AppVerificationQrScanResponseVerificationMethod = "qr"` - `const AppVerificationQrScanResponseVerificationMethodSAS AppVerificationQrScanResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationQrScanResponseVerificationPurposeLogin AppVerificationQrScanResponseVerificationPurpose = "login"` - `const AppVerificationQrScanResponseVerificationPurposeDevice AppVerificationQrScanResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationQrScanResponseVerificationStateRequested AppVerificationQrScanResponseVerificationState = "requested"` - `const AppVerificationQrScanResponseVerificationStateReady AppVerificationQrScanResponseVerificationState = "ready"` - `const AppVerificationQrScanResponseVerificationStateSASReady AppVerificationQrScanResponseVerificationState = "sas_ready"` - `const AppVerificationQrScanResponseVerificationStateQrScanned AppVerificationQrScanResponseVerificationState = "qr_scanned"` - `const AppVerificationQrScanResponseVerificationStateDone AppVerificationQrScanResponseVerificationState = "done"` - `const AppVerificationQrScanResponseVerificationStateCancelled AppVerificationQrScanResponseVerificationState = "cancelled"` - `const AppVerificationQrScanResponseVerificationStateError AppVerificationQrScanResponseVerificationState = "error"` - `Error AppVerificationQrScanResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationQrScanResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationQrScanResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationQrScanResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.Qr.Scan(context.TODO(), beeperdesktopapi.AppVerificationQrScanParams{ Data: "x", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Confirm QR code scan `client.App.Verifications.Qr.ConfirmScanned(ctx, verificationID) (*AppVerificationQrConfirmScannedResponse, error)` **post** `/v1/app/setup/verifications/{verificationID}/qr/confirm-scanned` Confirm that another device scanned this device QR code. ### Parameters - `verificationID string` Verification ID. ### Returns - `type AppVerificationQrConfirmScannedResponse struct{…}` - `Session AppVerificationQrConfirmScannedResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationQrConfirmScannedResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationQrConfirmScannedResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationQrConfirmScannedResponseSessionStateNeedsLogin AppVerificationQrConfirmScannedResponseSessionState = "needs-login"` - `const AppVerificationQrConfirmScannedResponseSessionStateInitializing AppVerificationQrConfirmScannedResponseSessionState = "initializing"` - `const AppVerificationQrConfirmScannedResponseSessionStateNeedsCrossSigningSetup AppVerificationQrConfirmScannedResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationQrConfirmScannedResponseSessionStateNeedsVerification AppVerificationQrConfirmScannedResponseSessionState = "needs-verification"` - `const AppVerificationQrConfirmScannedResponseSessionStateNeedsSecrets AppVerificationQrConfirmScannedResponseSessionState = "needs-secrets"` - `const AppVerificationQrConfirmScannedResponseSessionStateNeedsFirstSync AppVerificationQrConfirmScannedResponseSessionState = "needs-first-sync"` - `const AppVerificationQrConfirmScannedResponseSessionStateReady AppVerificationQrConfirmScannedResponseSessionState = "ready"` - `Matrix AppVerificationQrConfirmScannedResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationQrConfirmScannedResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationQrConfirmScannedResponseSessionVerificationAvailableActionAccept AppVerificationQrConfirmScannedResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationAvailableActionCancel AppVerificationQrConfirmScannedResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationQrConfirmScannedResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationAvailableActionSASStart AppVerificationQrConfirmScannedResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationAvailableActionSASConfirm AppVerificationQrConfirmScannedResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationQrConfirmScannedResponseSessionVerificationDirectionIncoming AppVerificationQrConfirmScannedResponseSessionVerificationDirection = "incoming"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationDirectionOutgoing AppVerificationQrConfirmScannedResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationQrConfirmScannedResponseSessionVerificationMethodQr AppVerificationQrConfirmScannedResponseSessionVerificationMethod = "qr"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationMethodSAS AppVerificationQrConfirmScannedResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationQrConfirmScannedResponseSessionVerificationPurposeLogin AppVerificationQrConfirmScannedResponseSessionVerificationPurpose = "login"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationPurposeDevice AppVerificationQrConfirmScannedResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateRequested AppVerificationQrConfirmScannedResponseSessionVerificationState = "requested"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateReady AppVerificationQrConfirmScannedResponseSessionVerificationState = "ready"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateSASReady AppVerificationQrConfirmScannedResponseSessionVerificationState = "sas_ready"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateQrScanned AppVerificationQrConfirmScannedResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateDone AppVerificationQrConfirmScannedResponseSessionVerificationState = "done"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateCancelled AppVerificationQrConfirmScannedResponseSessionVerificationState = "cancelled"` - `const AppVerificationQrConfirmScannedResponseSessionVerificationStateError AppVerificationQrConfirmScannedResponseSessionVerificationState = "error"` - `Error AppVerificationQrConfirmScannedResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationQrConfirmScannedResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationQrConfirmScannedResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationQrConfirmScannedResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationQrConfirmScannedResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationQrConfirmScannedResponseVerificationAvailableActionAccept AppVerificationQrConfirmScannedResponseVerificationAvailableAction = "accept"` - `const AppVerificationQrConfirmScannedResponseVerificationAvailableActionCancel AppVerificationQrConfirmScannedResponseVerificationAvailableAction = "cancel"` - `const AppVerificationQrConfirmScannedResponseVerificationAvailableActionQrConfirmScanned AppVerificationQrConfirmScannedResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationQrConfirmScannedResponseVerificationAvailableActionSASStart AppVerificationQrConfirmScannedResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationQrConfirmScannedResponseVerificationAvailableActionSASConfirm AppVerificationQrConfirmScannedResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationQrConfirmScannedResponseVerificationDirectionIncoming AppVerificationQrConfirmScannedResponseVerificationDirection = "incoming"` - `const AppVerificationQrConfirmScannedResponseVerificationDirectionOutgoing AppVerificationQrConfirmScannedResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationQrConfirmScannedResponseVerificationMethodQr AppVerificationQrConfirmScannedResponseVerificationMethod = "qr"` - `const AppVerificationQrConfirmScannedResponseVerificationMethodSAS AppVerificationQrConfirmScannedResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationQrConfirmScannedResponseVerificationPurposeLogin AppVerificationQrConfirmScannedResponseVerificationPurpose = "login"` - `const AppVerificationQrConfirmScannedResponseVerificationPurposeDevice AppVerificationQrConfirmScannedResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationQrConfirmScannedResponseVerificationStateRequested AppVerificationQrConfirmScannedResponseVerificationState = "requested"` - `const AppVerificationQrConfirmScannedResponseVerificationStateReady AppVerificationQrConfirmScannedResponseVerificationState = "ready"` - `const AppVerificationQrConfirmScannedResponseVerificationStateSASReady AppVerificationQrConfirmScannedResponseVerificationState = "sas_ready"` - `const AppVerificationQrConfirmScannedResponseVerificationStateQrScanned AppVerificationQrConfirmScannedResponseVerificationState = "qr_scanned"` - `const AppVerificationQrConfirmScannedResponseVerificationStateDone AppVerificationQrConfirmScannedResponseVerificationState = "done"` - `const AppVerificationQrConfirmScannedResponseVerificationStateCancelled AppVerificationQrConfirmScannedResponseVerificationState = "cancelled"` - `const AppVerificationQrConfirmScannedResponseVerificationStateError AppVerificationQrConfirmScannedResponseVerificationState = "error"` - `Error AppVerificationQrConfirmScannedResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationQrConfirmScannedResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationQrConfirmScannedResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationQrConfirmScannedResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.Qr.ConfirmScanned(context.TODO(), "x") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` # SAS ## Start emoji verification `client.App.Verifications.SAS.Start(ctx, verificationID) (*AppVerificationSASStartResponse, error)` **post** `/v1/app/setup/verifications/{verificationID}/sas/start` Start emoji comparison for device verification. ### Parameters - `verificationID string` Verification ID. ### Returns - `type AppVerificationSASStartResponse struct{…}` - `Session AppVerificationSASStartResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationSASStartResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationSASStartResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationSASStartResponseSessionStateNeedsLogin AppVerificationSASStartResponseSessionState = "needs-login"` - `const AppVerificationSASStartResponseSessionStateInitializing AppVerificationSASStartResponseSessionState = "initializing"` - `const AppVerificationSASStartResponseSessionStateNeedsCrossSigningSetup AppVerificationSASStartResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationSASStartResponseSessionStateNeedsVerification AppVerificationSASStartResponseSessionState = "needs-verification"` - `const AppVerificationSASStartResponseSessionStateNeedsSecrets AppVerificationSASStartResponseSessionState = "needs-secrets"` - `const AppVerificationSASStartResponseSessionStateNeedsFirstSync AppVerificationSASStartResponseSessionState = "needs-first-sync"` - `const AppVerificationSASStartResponseSessionStateReady AppVerificationSASStartResponseSessionState = "ready"` - `Matrix AppVerificationSASStartResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationSASStartResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationSASStartResponseSessionVerificationAvailableActionAccept AppVerificationSASStartResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationSASStartResponseSessionVerificationAvailableActionCancel AppVerificationSASStartResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationSASStartResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationSASStartResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationSASStartResponseSessionVerificationAvailableActionSASStart AppVerificationSASStartResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationSASStartResponseSessionVerificationAvailableActionSASConfirm AppVerificationSASStartResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationSASStartResponseSessionVerificationDirectionIncoming AppVerificationSASStartResponseSessionVerificationDirection = "incoming"` - `const AppVerificationSASStartResponseSessionVerificationDirectionOutgoing AppVerificationSASStartResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationSASStartResponseSessionVerificationMethodQr AppVerificationSASStartResponseSessionVerificationMethod = "qr"` - `const AppVerificationSASStartResponseSessionVerificationMethodSAS AppVerificationSASStartResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationSASStartResponseSessionVerificationPurposeLogin AppVerificationSASStartResponseSessionVerificationPurpose = "login"` - `const AppVerificationSASStartResponseSessionVerificationPurposeDevice AppVerificationSASStartResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationSASStartResponseSessionVerificationStateRequested AppVerificationSASStartResponseSessionVerificationState = "requested"` - `const AppVerificationSASStartResponseSessionVerificationStateReady AppVerificationSASStartResponseSessionVerificationState = "ready"` - `const AppVerificationSASStartResponseSessionVerificationStateSASReady AppVerificationSASStartResponseSessionVerificationState = "sas_ready"` - `const AppVerificationSASStartResponseSessionVerificationStateQrScanned AppVerificationSASStartResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationSASStartResponseSessionVerificationStateDone AppVerificationSASStartResponseSessionVerificationState = "done"` - `const AppVerificationSASStartResponseSessionVerificationStateCancelled AppVerificationSASStartResponseSessionVerificationState = "cancelled"` - `const AppVerificationSASStartResponseSessionVerificationStateError AppVerificationSASStartResponseSessionVerificationState = "error"` - `Error AppVerificationSASStartResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationSASStartResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationSASStartResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationSASStartResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationSASStartResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationSASStartResponseVerificationAvailableActionAccept AppVerificationSASStartResponseVerificationAvailableAction = "accept"` - `const AppVerificationSASStartResponseVerificationAvailableActionCancel AppVerificationSASStartResponseVerificationAvailableAction = "cancel"` - `const AppVerificationSASStartResponseVerificationAvailableActionQrConfirmScanned AppVerificationSASStartResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationSASStartResponseVerificationAvailableActionSASStart AppVerificationSASStartResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationSASStartResponseVerificationAvailableActionSASConfirm AppVerificationSASStartResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationSASStartResponseVerificationDirectionIncoming AppVerificationSASStartResponseVerificationDirection = "incoming"` - `const AppVerificationSASStartResponseVerificationDirectionOutgoing AppVerificationSASStartResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationSASStartResponseVerificationMethodQr AppVerificationSASStartResponseVerificationMethod = "qr"` - `const AppVerificationSASStartResponseVerificationMethodSAS AppVerificationSASStartResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationSASStartResponseVerificationPurposeLogin AppVerificationSASStartResponseVerificationPurpose = "login"` - `const AppVerificationSASStartResponseVerificationPurposeDevice AppVerificationSASStartResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationSASStartResponseVerificationStateRequested AppVerificationSASStartResponseVerificationState = "requested"` - `const AppVerificationSASStartResponseVerificationStateReady AppVerificationSASStartResponseVerificationState = "ready"` - `const AppVerificationSASStartResponseVerificationStateSASReady AppVerificationSASStartResponseVerificationState = "sas_ready"` - `const AppVerificationSASStartResponseVerificationStateQrScanned AppVerificationSASStartResponseVerificationState = "qr_scanned"` - `const AppVerificationSASStartResponseVerificationStateDone AppVerificationSASStartResponseVerificationState = "done"` - `const AppVerificationSASStartResponseVerificationStateCancelled AppVerificationSASStartResponseVerificationState = "cancelled"` - `const AppVerificationSASStartResponseVerificationStateError AppVerificationSASStartResponseVerificationState = "error"` - `Error AppVerificationSASStartResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationSASStartResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationSASStartResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationSASStartResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.SAS.Start(context.TODO(), "x") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ``` ## Confirm emoji verification `client.App.Verifications.SAS.Confirm(ctx, verificationID) (*AppVerificationSASConfirmResponse, error)` **post** `/v1/app/setup/verifications/{verificationID}/sas/confirm` Confirm that the emoji or number sequence matches on both devices. ### Parameters - `verificationID string` Verification ID. ### Returns - `type AppVerificationSASConfirmResponse struct{…}` - `Session AppVerificationSASConfirmResponseSession` Current app sign-in and encrypted messaging setup state. - `E2EE AppVerificationSASConfirmResponseSessionE2EE` Encrypted messaging setup status. - `CrossSigning bool` Whether this account can verify trusted devices. - `FirstSyncDone bool` Whether the first encrypted message sync is complete. - `HasBackedUpRecoveryKey bool` Whether the user confirmed that they saved their recovery key. - `Initialized bool` Whether encrypted messaging setup has started. - `KeyBackup bool` Whether encrypted message backup is available. - `Secrets AppVerificationSASConfirmResponseSessionE2EESecrets` Encrypted messaging keys available on this device. - `MasterKey bool` Whether the account identity key is available. - `MegolmBackupKey bool` Whether the encrypted message backup key is available. - `RecoveryKey bool` Whether a recovery key is available. - `SelfSigningKey bool` Whether the device trust key is available. - `UserSigningKey bool` Whether the user trust key is available. - `SecretStorage bool` Whether secure key storage is available. - `Verified bool` Whether this device is trusted for encrypted messages. - `RecoveryKeyGeneratedAt float64` Unix timestamp for when the recovery key was created. - `State string` Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server. - `const AppVerificationSASConfirmResponseSessionStateNeedsLogin AppVerificationSASConfirmResponseSessionState = "needs-login"` - `const AppVerificationSASConfirmResponseSessionStateInitializing AppVerificationSASConfirmResponseSessionState = "initializing"` - `const AppVerificationSASConfirmResponseSessionStateNeedsCrossSigningSetup AppVerificationSASConfirmResponseSessionState = "needs-cross-signing-setup"` - `const AppVerificationSASConfirmResponseSessionStateNeedsVerification AppVerificationSASConfirmResponseSessionState = "needs-verification"` - `const AppVerificationSASConfirmResponseSessionStateNeedsSecrets AppVerificationSASConfirmResponseSessionState = "needs-secrets"` - `const AppVerificationSASConfirmResponseSessionStateNeedsFirstSync AppVerificationSASConfirmResponseSessionState = "needs-first-sync"` - `const AppVerificationSASConfirmResponseSessionStateReady AppVerificationSASConfirmResponseSessionState = "ready"` - `Matrix AppVerificationSASConfirmResponseSessionMatrix` Signed-in account details. Omitted until sign-in is complete. - `DeviceID string` Current device ID. - `Homeserver string` Beeper homeserver URL for this account. - `UserID string` Signed-in Beeper user ID. - `Verification AppVerificationSASConfirmResponseSessionVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationSASConfirmResponseSessionVerificationAvailableActionAccept AppVerificationSASConfirmResponseSessionVerificationAvailableAction = "accept"` - `const AppVerificationSASConfirmResponseSessionVerificationAvailableActionCancel AppVerificationSASConfirmResponseSessionVerificationAvailableAction = "cancel"` - `const AppVerificationSASConfirmResponseSessionVerificationAvailableActionQrConfirmScanned AppVerificationSASConfirmResponseSessionVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationSASConfirmResponseSessionVerificationAvailableActionSASStart AppVerificationSASConfirmResponseSessionVerificationAvailableAction = "sas.start"` - `const AppVerificationSASConfirmResponseSessionVerificationAvailableActionSASConfirm AppVerificationSASConfirmResponseSessionVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationSASConfirmResponseSessionVerificationDirectionIncoming AppVerificationSASConfirmResponseSessionVerificationDirection = "incoming"` - `const AppVerificationSASConfirmResponseSessionVerificationDirectionOutgoing AppVerificationSASConfirmResponseSessionVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationSASConfirmResponseSessionVerificationMethodQr AppVerificationSASConfirmResponseSessionVerificationMethod = "qr"` - `const AppVerificationSASConfirmResponseSessionVerificationMethodSAS AppVerificationSASConfirmResponseSessionVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationSASConfirmResponseSessionVerificationPurposeLogin AppVerificationSASConfirmResponseSessionVerificationPurpose = "login"` - `const AppVerificationSASConfirmResponseSessionVerificationPurposeDevice AppVerificationSASConfirmResponseSessionVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationSASConfirmResponseSessionVerificationStateRequested AppVerificationSASConfirmResponseSessionVerificationState = "requested"` - `const AppVerificationSASConfirmResponseSessionVerificationStateReady AppVerificationSASConfirmResponseSessionVerificationState = "ready"` - `const AppVerificationSASConfirmResponseSessionVerificationStateSASReady AppVerificationSASConfirmResponseSessionVerificationState = "sas_ready"` - `const AppVerificationSASConfirmResponseSessionVerificationStateQrScanned AppVerificationSASConfirmResponseSessionVerificationState = "qr_scanned"` - `const AppVerificationSASConfirmResponseSessionVerificationStateDone AppVerificationSASConfirmResponseSessionVerificationState = "done"` - `const AppVerificationSASConfirmResponseSessionVerificationStateCancelled AppVerificationSASConfirmResponseSessionVerificationState = "cancelled"` - `const AppVerificationSASConfirmResponseSessionVerificationStateError AppVerificationSASConfirmResponseSessionVerificationState = "error"` - `Error AppVerificationSASConfirmResponseSessionVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationSASConfirmResponseSessionVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationSASConfirmResponseSessionVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationSASConfirmResponseSessionVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. - `Verification AppVerificationSASConfirmResponseVerification` Trusted device verification progress. - `ID string` Verification ID to pass in verification action paths. - `AvailableActions []string` Verification actions that are valid for the current state. - `const AppVerificationSASConfirmResponseVerificationAvailableActionAccept AppVerificationSASConfirmResponseVerificationAvailableAction = "accept"` - `const AppVerificationSASConfirmResponseVerificationAvailableActionCancel AppVerificationSASConfirmResponseVerificationAvailableAction = "cancel"` - `const AppVerificationSASConfirmResponseVerificationAvailableActionQrConfirmScanned AppVerificationSASConfirmResponseVerificationAvailableAction = "qr.confirmScanned"` - `const AppVerificationSASConfirmResponseVerificationAvailableActionSASStart AppVerificationSASConfirmResponseVerificationAvailableAction = "sas.start"` - `const AppVerificationSASConfirmResponseVerificationAvailableActionSASConfirm AppVerificationSASConfirmResponseVerificationAvailableAction = "sas.confirm"` - `Direction string` Whether this device started or received the verification. - `const AppVerificationSASConfirmResponseVerificationDirectionIncoming AppVerificationSASConfirmResponseVerificationDirection = "incoming"` - `const AppVerificationSASConfirmResponseVerificationDirectionOutgoing AppVerificationSASConfirmResponseVerificationDirection = "outgoing"` - `Methods []string` Verification methods supported for this transaction. - `const AppVerificationSASConfirmResponseVerificationMethodQr AppVerificationSASConfirmResponseVerificationMethod = "qr"` - `const AppVerificationSASConfirmResponseVerificationMethodSAS AppVerificationSASConfirmResponseVerificationMethod = "sas"` - `Purpose string` Why this verification exists. - `const AppVerificationSASConfirmResponseVerificationPurposeLogin AppVerificationSASConfirmResponseVerificationPurpose = "login"` - `const AppVerificationSASConfirmResponseVerificationPurposeDevice AppVerificationSASConfirmResponseVerificationPurpose = "device"` - `State string` Current trusted-device verification state. - `const AppVerificationSASConfirmResponseVerificationStateRequested AppVerificationSASConfirmResponseVerificationState = "requested"` - `const AppVerificationSASConfirmResponseVerificationStateReady AppVerificationSASConfirmResponseVerificationState = "ready"` - `const AppVerificationSASConfirmResponseVerificationStateSASReady AppVerificationSASConfirmResponseVerificationState = "sas_ready"` - `const AppVerificationSASConfirmResponseVerificationStateQrScanned AppVerificationSASConfirmResponseVerificationState = "qr_scanned"` - `const AppVerificationSASConfirmResponseVerificationStateDone AppVerificationSASConfirmResponseVerificationState = "done"` - `const AppVerificationSASConfirmResponseVerificationStateCancelled AppVerificationSASConfirmResponseVerificationState = "cancelled"` - `const AppVerificationSASConfirmResponseVerificationStateError AppVerificationSASConfirmResponseVerificationState = "error"` - `Error AppVerificationSASConfirmResponseVerificationError` Verification error details, if verification stopped. - `Code string` Verification error code. - `Reason string` User-facing verification error message. - `OtherDevice AppVerificationSASConfirmResponseVerificationOtherDevice` Other device participating in verification. - `ID string` Other device ID. - `Name string` Other device display name, if known. - `OtherUserID string` Other Beeper user participating in verification. - `Qr AppVerificationSASConfirmResponseVerificationQr` QR verification data. - `Data string` QR code payload to display for verification. - `SAS AppVerificationSASConfirmResponseVerificationSAS` Emoji or number comparison data for verification. - `Emojis string` Emoji sequence to compare on both devices. - `Decimals string` Number sequence to compare on both devices. ### Example ```go package main import ( "context" "fmt" "github.com/beeper/desktop-api-go" "github.com/beeper/desktop-api-go/option" ) func main() { client := beeperdesktopapi.NewClient( option.WithAccessToken("My Access Token"), ) response, err := client.App.Verifications.SAS.Confirm(context.TODO(), "x") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Session) } ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } ```