Skip to content

Confirm a registered device

POST
/mfa/devices/{device}/confirm
curl --request POST \
--url https://work.optidata.cloud/api/mfa/devices/example/confirm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'

Completes enrolment of a device by proving possession of its private key. Only a confirmed device can answer challenges. Requires permission to update the device.

device
required
string

Public identifier of the device.

Media typeapplication/json

Enrolment proof produced by the device. The exact fields are defined by the client that registered it.

object
key
additional properties
any
Examplegenerated
{}

The confirmed device.

Media typeapplication/json

A device registered as a second authentication factor.

object
id
integer format: int64
identifier

Public identifier of the device, used in paths.

string
uuid

UUID of the user the device belongs to.

string format: uuid
duid

Device-supplied hardware identifier.

string | null
name
string | null
is_confirmed
boolean
created_at
string format: date-time
Examplegenerated
{
"id": 1,
"identifier": "example",
"uuid": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"duid": "example",
"name": "example",
"is_confirmed": true,
"created_at": "2026-04-15T12:00:00Z"
}

Missing, malformed or expired authentication key.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The caller lacks the permission level the operation requires.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Exampledenied
{
"message": "This action is unauthorized."
}

The resource does not exist, or does not belong to the given drive.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Examplemissing
{
"message": "No query results for model [App\\Models\\Node] 99999999"
}

The request body or query string failed validation.

Media typeapplication/json
object
message
required

The first validation message.

string
errors
required

Validation messages keyed by field name.

object
key
additional properties
Array<string>
Examples
Exampleinvalid
{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
}

Rate limit exceeded. Retry after the window resets.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Examplethrottled
{
"message": "Too Many Attempts."
}