Skip to content
Download Beeper

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.

ParametersExpand Collapse
verificationID string

Verification ID.

minLength1
ReturnsExpand Collapse
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 float64Optional

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.

One of the following:
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 AppVerificationQrConfirmScannedResponseSessionMatrixOptional

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 AppVerificationQrConfirmScannedResponseSessionVerificationOptional

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.

One of the following:
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.

One of the following:
const AppVerificationQrConfirmScannedResponseSessionVerificationDirectionIncoming AppVerificationQrConfirmScannedResponseSessionVerificationDirection = "incoming"
const AppVerificationQrConfirmScannedResponseSessionVerificationDirectionOutgoing AppVerificationQrConfirmScannedResponseSessionVerificationDirection = "outgoing"
Methods []string

Verification methods supported for this transaction.

One of the following:
const AppVerificationQrConfirmScannedResponseSessionVerificationMethodQr AppVerificationQrConfirmScannedResponseSessionVerificationMethod = "qr"
const AppVerificationQrConfirmScannedResponseSessionVerificationMethodSAS AppVerificationQrConfirmScannedResponseSessionVerificationMethod = "sas"
Purpose string

Why this verification exists.

One of the following:
const AppVerificationQrConfirmScannedResponseSessionVerificationPurposeLogin AppVerificationQrConfirmScannedResponseSessionVerificationPurpose = "login"
const AppVerificationQrConfirmScannedResponseSessionVerificationPurposeDevice AppVerificationQrConfirmScannedResponseSessionVerificationPurpose = "device"
State string

Current trusted-device verification state.

One of the following:
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 AppVerificationQrConfirmScannedResponseSessionVerificationErrorOptional

Verification error details, if verification stopped.

Code string

Verification error code.

Reason string

User-facing verification error message.

OtherDevice AppVerificationQrConfirmScannedResponseSessionVerificationOtherDeviceOptional

Other device participating in verification.

ID string

Other device ID.

Name stringOptional

Other device display name, if known.

OtherUserID stringOptional

Other Beeper user participating in verification.

Qr AppVerificationQrConfirmScannedResponseSessionVerificationQrOptional

QR verification data.

Data string

QR code payload to display for verification.

SAS AppVerificationQrConfirmScannedResponseSessionVerificationSASOptional

Emoji or number comparison data for verification.

Emojis string

Emoji sequence to compare on both devices.

Decimals stringOptional

Number sequence to compare on both devices.

Verification AppVerificationQrConfirmScannedResponseVerificationOptional

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.

One of the following:
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.

One of the following:
const AppVerificationQrConfirmScannedResponseVerificationDirectionIncoming AppVerificationQrConfirmScannedResponseVerificationDirection = "incoming"
const AppVerificationQrConfirmScannedResponseVerificationDirectionOutgoing AppVerificationQrConfirmScannedResponseVerificationDirection = "outgoing"
Methods []string

Verification methods supported for this transaction.

One of the following:
const AppVerificationQrConfirmScannedResponseVerificationMethodQr AppVerificationQrConfirmScannedResponseVerificationMethod = "qr"
const AppVerificationQrConfirmScannedResponseVerificationMethodSAS AppVerificationQrConfirmScannedResponseVerificationMethod = "sas"
Purpose string

Why this verification exists.

One of the following:
const AppVerificationQrConfirmScannedResponseVerificationPurposeLogin AppVerificationQrConfirmScannedResponseVerificationPurpose = "login"
const AppVerificationQrConfirmScannedResponseVerificationPurposeDevice AppVerificationQrConfirmScannedResponseVerificationPurpose = "device"
State string

Current trusted-device verification state.

One of the following:
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 AppVerificationQrConfirmScannedResponseVerificationErrorOptional

Verification error details, if verification stopped.

Code string

Verification error code.

Reason string

User-facing verification error message.

OtherDevice AppVerificationQrConfirmScannedResponseVerificationOtherDeviceOptional

Other device participating in verification.

ID string

Other device ID.

Name stringOptional

Other device display name, if known.

OtherUserID stringOptional

Other Beeper user participating in verification.

Qr AppVerificationQrConfirmScannedResponseVerificationQrOptional

QR verification data.

Data string

QR code payload to display for verification.

SAS AppVerificationQrConfirmScannedResponseVerificationSASOptional

Emoji or number comparison data for verification.

Emojis string

Emoji sequence to compare on both devices.

Decimals stringOptional

Number sequence to compare on both devices.

Confirm QR code scan

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)
}
{
  "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"
    }
  }
}
Returns Examples
{
  "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"
    }
  }
}