Skip to content
Download Beeper

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.

ParametersExpand Collapse
body AppVerificationNewParams
Purpose param.Field[AppVerificationNewParamsPurpose]Optional

Why this verification is being started.

const AppVerificationNewParamsPurposeLogin AppVerificationNewParamsPurpose = "login"
const AppVerificationNewParamsPurposeDevice AppVerificationNewParamsPurpose = "device"
UserID param.Field[string]Optional

Beeper user ID to verify. Defaults to the signed-in user.

ReturnsExpand Collapse
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 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 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 AppVerificationNewResponseSessionMatrixOptional

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 AppVerificationNewResponseSessionVerificationOptional

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 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.

One of the following:
const AppVerificationNewResponseSessionVerificationDirectionIncoming AppVerificationNewResponseSessionVerificationDirection = "incoming"
const AppVerificationNewResponseSessionVerificationDirectionOutgoing AppVerificationNewResponseSessionVerificationDirection = "outgoing"
Methods []string

Verification methods supported for this transaction.

One of the following:
const AppVerificationNewResponseSessionVerificationMethodQr AppVerificationNewResponseSessionVerificationMethod = "qr"
const AppVerificationNewResponseSessionVerificationMethodSAS AppVerificationNewResponseSessionVerificationMethod = "sas"
Purpose string

Why this verification exists.

One of the following:
const AppVerificationNewResponseSessionVerificationPurposeLogin AppVerificationNewResponseSessionVerificationPurpose = "login"
const AppVerificationNewResponseSessionVerificationPurposeDevice AppVerificationNewResponseSessionVerificationPurpose = "device"
State string

Current trusted-device verification state.

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

Verification error details, if verification stopped.

Code string

Verification error code.

Reason string

User-facing verification error message.

OtherDevice AppVerificationNewResponseSessionVerificationOtherDeviceOptional

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 AppVerificationNewResponseSessionVerificationQrOptional

QR verification data.

Data string

QR code payload to display for verification.

SAS AppVerificationNewResponseSessionVerificationSASOptional

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 AppVerificationNewResponseVerificationOptional

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 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.

One of the following:
const AppVerificationNewResponseVerificationDirectionIncoming AppVerificationNewResponseVerificationDirection = "incoming"
const AppVerificationNewResponseVerificationDirectionOutgoing AppVerificationNewResponseVerificationDirection = "outgoing"
Methods []string

Verification methods supported for this transaction.

One of the following:
const AppVerificationNewResponseVerificationMethodQr AppVerificationNewResponseVerificationMethod = "qr"
const AppVerificationNewResponseVerificationMethodSAS AppVerificationNewResponseVerificationMethod = "sas"
Purpose string

Why this verification exists.

One of the following:
const AppVerificationNewResponseVerificationPurposeLogin AppVerificationNewResponseVerificationPurpose = "login"
const AppVerificationNewResponseVerificationPurposeDevice AppVerificationNewResponseVerificationPurpose = "device"
State string

Current trusted-device verification state.

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

Verification error details, if verification stopped.

Code string

Verification error code.

Reason string

User-facing verification error message.

OtherDevice AppVerificationNewResponseVerificationOtherDeviceOptional

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 AppVerificationNewResponseVerificationQrOptional

QR verification data.

Data string

QR code payload to display for verification.

SAS AppVerificationNewResponseVerificationSASOptional

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.

Start device verification

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