Skip to main content

Verify Push API

Verify Push endpoints exposed by the Devotel CPaaS API Base path: /api/v1/verify/push Endpoint count: 4

Verify a push challenge signature

POST /api/v1/verify/push/challenges/{challengeId}/verify
Verify the device’s signature over the challenge’s signing string. On match: challenge moves to approved, factor flips to verified. On mismatch: attempts increment; auto-denied at maxAttempts.
challengeId
string
required
signature
string
required
The device’s base64-encoded signature over the challenge signing string factorId.challengeId.nonce (1–4096 characters).

Register a push factor

POST /api/v1/verify/push/factors
Register a device’s public key for phishing-resistant MFA. Returns a binding challenge the device must sign to activate the factor.
identity
string
required
Stable identifier for the end user this device belongs to — your user id, email, or username (1–255 characters).
friendlyName
string
required
Human-readable label for the paired device, shown when the user reviews their registered factors (1–120 characters).
algorithm
string (enum: ed25519|ecdsa-p256)
required
Signature algorithm of the device key pair — ed25519 or ecdsa-p256.
publicKey
string
required
The device’s base64-encoded public key. The matching private key never leaves the device; it signs each challenge (1–4096 characters).
keyFormat
string (enum: raw|spki)
required
Encoding of publicKeyraw for a bare key or spki for a SubjectPublicKeyInfo-wrapped key.
deviceTokenId
string
Optional push-token id (FCM, APNs, or Web Push) the service uses to deliver challenge notifications to this device (1–120 characters).
metadata
object
Optional free-form key/value bag — device model, OS version, attestation chain. The caller defines the contract.

Issue a push challenge

POST /api/v1/verify/push/factors/{factorId}/challenges
Mint a server-issued nonce + persist a pending challenge row. The device signs <factorId>.<challengeId>.<nonce> and submits the signature via /verify/push/challenges/:challengeId/verify.
factorId
string
required
contextMessage
string
Human-readable prompt shown in the push notification so the user knows what they are approving, e.g. the action or device (1–280 characters).
ttlSeconds
integer
Lifetime of the issued challenge, in seconds, before it expires. Defaults to 120; range 30–600.

Revoke a push factor

POST /api/v1/verify/push/factors/{factorId}/revoke
Mark a factor as revoked. All subsequent challenges are rejected with a 409 + reason=FACTOR_REVOKED. Irreversible.
factorId
string
required