# Seald Dashboard API Reference

Seald Dashboard API documentation

# API Password authentication

This section describes the API to authenticate with a password. This is used in the dashboard, but should almost never be used programatically. Look at the "API Token authentication" section instead.

# disableEventlog admin

GET /dashboardapi/v2/admin/disable_eventlog/

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# disableEventlog admin (POST)

POST /dashboardapi/v2/admin/disable_eventlog/

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Check dashboardapi session status

GET /dashboardapi/v2/admin/status/

# Responses

Status Meaning Description
200 OK (opens new window) none

# Send a password retrieval request

POST /dashboardapi/v2/admin/forgot_password/

If challenge is not sent, send an email to email with a challenge.
If challenge is set and new_password is not set, check that challenge is correct.
If challenge and new_password are set, change the password of the administrator.

# Parameters

Name In Type Required Description
email body string(email) true
challenge body string false
new_password body string
Length: [ 8 .. 1024]
false
Request body samples
{
  "email": "user@example.com",
  "challenge": "string",
  "new_password": "stringst"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Generate a SSKS API Key

POST /dashboardapi/v2/admin/generate_ssks_apikey/

Generate a SSKS API Key

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Login an HTTP session to the dashboardapi

POST /dashboardapi/v2/admin/login/

# Parameters

Name In Type Required Description
email body string(email) true
password body string true
otp body string false
ttl body integer false
Request body samples
{
  "email": "user@example.com",
  "password": "string",
  "otp": "",
  "ttl": 0
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Logout from an HTTP session

POST /dashboardapi/v2/admin/logout/

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Set up a new password for dashboardapi

POST /dashboardapi/v2/admin/update_password/

# Parameters

Name In Type Required Description
old_password body string true
new_password body string
Length: [ 8 .. 1024]
true
Request body samples
{
  "old_password": "string",
  "new_password": "stringst"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# API Token authentication

# list apitokens

GET /dashboardapi/v2/apitokens/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) false
» created string(date-time) false
» valid_until string(date-time)¦null true
» name string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created": "2019-08-24T14:15:22Z",
      "valid_until": "2019-08-24T14:15:22Z",
      "name": "string"
    }
  ]
}

# create apitokens

POST /dashboardapi/v2/apitokens/

# Parameters

Name In Type Required Description
id body string(uuid) false
created body string(date-time) false
valid_until body string(date-time)¦null true
name body string true
api_key body string(uuid) false
Request body samples
{
  "valid_until": "2019-08-24T14:15:22Z",
  "name": "string"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
id string(uuid) false
created string(date-time) false
valid_until string(date-time)¦null true
name string true
api_key string(uuid) false
Response body examples

201 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "valid_until": "2019-08-24T14:15:22Z",
  "name": "string",
  "api_key": "7f819f8f-8220-4dcd-b7e3-37c81ead8b7a"
}

# destroy apitokens

DELETE /dashboardapi/v2/apitokens/{id}/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
204 No Content (opens new window) none

# Users management

# list users

GET /dashboardapi/v2/users/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
display_name query string false Only match Users whose display name contains this.
email query string(email) false Only match Users whose email address contains this.
email_all_state query boolean false If true, Users with previously disabled email address will also match.
connector_value query string false If provided with connector_type, only match Users who have a connector matching this type and value.
connector_type query string
Allowed values: "MO", "EM", "PH", "AP"
false If provided with connector_value, only match Users who have a connector matching this type and value.
connector_all_state query boolean false If true, Users with previously disabled connector will also match.
team_disabled query boolean false If false, only match current non-revoked users. If true, only match Users who have been disabled from the team.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) true
» display_name string true
» in_team string false
» is_group string false
» group_team_id string false
» created string(date-time) true
» last_heartbeat string(date-time) true
» last_usage string(date-time) true
» primary_email string false
» team_disabled boolean true
» group_is_group_initialized string false
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "display_name": "string",
      "in_team": "string",
      "is_group": "string",
      "group_team_id": "string",
      "created": "2019-08-24T14:15:22Z",
      "last_heartbeat": "2019-08-24T14:15:22Z",
      "last_usage": "2019-08-24T14:15:22Z",
      "primary_email": "string",
      "team_disabled": true,
      "group_is_group_initialized": "string"
    }
  ]
}

# sigchainNotOk users

GET /dashboardapi/v2/users/sigchain_not_ok/

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
display_name string true
in_team string false
is_group string false
group_team_id string false
created string(date-time) true
last_heartbeat string(date-time) true
last_usage string(date-time) true
primary_email string false
team_disabled boolean true
group_is_group_initialized string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "display_name": "string",
  "in_team": "string",
  "is_group": "string",
  "group_team_id": "string",
  "created": "2019-08-24T14:15:22Z",
  "last_heartbeat": "2019-08-24T14:15:22Z",
  "last_usage": "2019-08-24T14:15:22Z",
  "primary_email": "string",
  "team_disabled": true,
  "group_is_group_initialized": "string"
}

# retrieve users

GET /dashboardapi/v2/users/{id}/

# Parameters

Name In Type Required Description
id path string true
display_name query string false Only match Users whose display name contains this.
email query string(email) false Only match Users whose email address contains this.
email_all_state query boolean false If true, Users with previously disabled email address will also match.
connector_value query string false If provided with connector_type, only match Users who have a connector matching this type and value.
connector_type query string
Allowed values: "MO", "EM", "PH", "AP"
false If provided with connector_value, only match Users who have a connector matching this type and value.
connector_all_state query boolean false If true, Users with previously disabled connector will also match.
team_disabled query boolean false If false, only match current non-revoked users. If true, only match Users who have been disabled from the team.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
display_name string true
in_team string false
is_group string false
group_team_id string false
created string(date-time) true
last_heartbeat string(date-time) true
last_usage string(date-time) true
primary_email string false
team_disabled boolean true
group_is_group_initialized string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "display_name": "string",
  "in_team": "string",
  "is_group": "string",
  "group_team_id": "string",
  "created": "2019-08-24T14:15:22Z",
  "last_heartbeat": "2019-08-24T14:15:22Z",
  "last_usage": "2019-08-24T14:15:22Z",
  "primary_email": "string",
  "team_disabled": true,
  "group_is_group_initialized": "string"
}

# sigchain users

GET /dashboardapi/v2/users/{id}/sigchain/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
display_name string true
in_team string false
is_group string false
group_team_id string false
created string(date-time) true
last_heartbeat string(date-time) true
last_usage string(date-time) true
primary_email string false
team_disabled boolean true
group_is_group_initialized string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "display_name": "string",
  "in_team": "string",
  "is_group": "string",
  "group_team_id": "string",
  "created": "2019-08-24T14:15:22Z",
  "last_heartbeat": "2019-08-24T14:15:22Z",
  "last_usage": "2019-08-24T14:15:22Z",
  "primary_email": "string",
  "team_disabled": true,
  "group_is_group_initialized": "string"
}

# sigchainDetails users

GET /dashboardapi/v2/users/{id}/sigchain_details/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
display_name string true
in_team string false
is_group string false
group_team_id string false
created string(date-time) true
last_heartbeat string(date-time) true
last_usage string(date-time) true
primary_email string false
team_disabled boolean true
group_is_group_initialized string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "display_name": "string",
  "in_team": "string",
  "is_group": "string",
  "group_team_id": "string",
  "created": "2019-08-24T14:15:22Z",
  "last_heartbeat": "2019-08-24T14:15:22Z",
  "last_usage": "2019-08-24T14:15:22Z",
  "primary_email": "string",
  "team_disabled": true,
  "group_is_group_initialized": "string"
}

# Automatic removal of a user

POST /dashboardapi/v2/users/{id}/full_revoke/

This endpoint will revoke all devices of a user, then will disable him from the team.
The endpoint launches an asynchronous task that should take less than a second for small users, but up to a minute for users with many devices. So you might need to wait to see it applied.

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Check sigchain integrity of a user or a group

POST /dashboardapi/v2/users/{id}/sigchain_checks/

This endpoint will manually launch a sigchain integrity check (which is otherwise automatically scheduled on a daily basis). The following checks will be performed :

  • Sigchain compliance (transaction, signature, and consistency);
  • Whether or not what's written in sigchain is the same than in database.

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
created string(date-time) true
bearduser_id string(uuid) true
last_check_datetime string(date-time) true
last_check_is_ok boolean true
last_check_crashed boolean true
last_check_skipped boolean true
notifications object true
Response body examples

201 Response

{
  "created": "2019-08-24T14:15:22Z",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "last_check_datetime": "2019-08-24T14:15:22Z",
  "last_check_is_ok": true,
  "last_check_crashed": true,
  "last_check_skipped": true,
  "notifications": {}
}

# teamUserDisable users

POST /dashboardapi/v2/users/{id}/team_user_disable/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Group management

# list groups

GET /dashboardapi/v2/groups/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» created string(date-time) true
» is_group_initialized boolean true
» bearduser object true
»» id string(uuid) true
»» display_name string true
» device_id string(uuid) true
» primary_email string false
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "created": "2019-08-24T14:15:22Z",
      "is_group_initialized": true,
      "bearduser": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "display_name": "string"
      },
      "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940",
      "primary_email": "string"
    }
  ]
}

# create groups

POST /dashboardapi/v2/groups/

# Parameters

Name In Type Required Description
group_name body string
Length: [ 1 .. 64]
false
encrypt_pubkey body string
Length: [ 10 .. 2048]
true
signing_pubkey body string
Length: [ 10 .. 2048]
true
encrypted_encryption_privkey body string
Length: [ 10 .. 4096]
true
encrypted_signing_privkey body string
Length: [ 10 .. 4096]
true
members body [string] true
admins body [string]
Default: []
false
message_keys body [object] true
» created_for_key body string(uuid) true
» encrypted_message_key body string true
» created_for_key_hash body string false
Request body samples
{
  "group_name": "",
  "encrypt_pubkey": "stringstri",
  "signing_pubkey": "stringstri",
  "encrypted_encryption_privkey": "stringstri",
  "encrypted_signing_privkey": "stringstri",
  "members": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "admins": [],
  "message_keys": [
    {
      "created_for_key": "8c64c67e-80c8-4b6b-bb2c-9ae3b4ae7b04",
      "encrypted_message_key": "string",
      "created_for_key_hash": ""
    }
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# retrieve groups

GET /dashboardapi/v2/groups/{id}/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# groupdevices groups

GET /dashboardapi/v2/groups/{id}/groupdevices/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# members groups

GET /dashboardapi/v2/groups/{id}/members/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# members groups (POST)

POST /dashboardapi/v2/groups/{id}/members/

# Parameters

Name In Type Required Description
id path string true
edited_beardusers_device_messages body object true
transaction_data_members body object false
added_admins body [string] false
Request body samples
{
  "edited_beardusers_device_messages": {},
  "transaction_data_members": false,
  "added_admins": [
    "string"
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# members groups (PATCH)

PATCH /dashboardapi/v2/groups/{id}/members/

# Parameters

Name In Type Required Description
id path string true
edited_beardusers_device_messages body object true
transaction_data_members body object false
added_admins body [string] false
Request body samples
{
  "edited_beardusers_device_messages": {},
  "transaction_data_members": false,
  "added_admins": [
    "string"
  ]
}

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# members groups (DELETE)

DELETE /dashboardapi/v2/groups/{id}/members/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
204 No Content (opens new window) none

# fullRevoke groups

POST /dashboardapi/v2/groups/{id}/full_revoke/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# initSigchain groups

POST /dashboardapi/v2/groups/{id}/init_sigchain/

# Parameters

Name In Type Required Description
id path string true
transaction_data body object true
transaction_data_members body object true
Request body samples
{
  "transaction_data": {},
  "transaction_data_members": {}
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# rename groups

POST /dashboardapi/v2/groups/{id}/rename/

# Parameters

Name In Type Required Description
id path string true
group_name body string
Length: [ 1 .. 64]
true
Request body samples
{
  "group_name": "string"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# renew groups

POST /dashboardapi/v2/groups/{id}/renew/

# Parameters

Name In Type Required Description
id path string true
transaction_data body object true
encrypt_pubkey body string
Length: [ 10 .. 2048]
true
signing_pubkey body string
Length: [ 10 .. 2048]
true
encrypted_encryption_privkey body string
Length: [ 10 .. 4096]
true
encrypted_signing_privkey body string
Length: [ 10 .. 4096]
true
message_keys body [object] true
» created_for_key body string(uuid) true
» encrypted_message_key body string true
» created_for_key_hash body string false
Request body samples
{
  "transaction_data": {},
  "encrypt_pubkey": "stringstri",
  "signing_pubkey": "stringstri",
  "encrypted_encryption_privkey": "stringstri",
  "encrypted_signing_privkey": "stringstri",
  "message_keys": [
    {
      "created_for_key": "8c64c67e-80c8-4b6b-bb2c-9ae3b4ae7b04",
      "encrypted_message_key": "string",
      "created_for_key_hash": ""
    }
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# serverDeleteMembers groups

POST /dashboardapi/v2/groups/{id}/server_delete_members/

# Parameters

Name In Type Required Description
id path string true
bearduser_ids body [string] true
Request body samples
{
  "bearduser_ids": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Devices management

# list keys

GET /dashboardapi/v2/keys/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
user query string(uuid) true Only match device Keys related to this user.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) true
» created string(date-time) true
» device_name string true
» state string true
» bearduser_id string(uuid) true
» last_seen object true
»» success boolean true
»» ip string true
»» key_id string(uuid) true
»» bearduser_id string(uuid) true
»» datetime string(date-time) true
»» location object true
»» user_agent string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created": "2019-08-24T14:15:22Z",
      "device_name": "string",
      "state": "string",
      "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
      "last_seen": {
        "success": true,
        "ip": "string",
        "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5",
        "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
        "datetime": "2019-08-24T14:15:22Z",
        "location": {},
        "user_agent": "string"
      }
    }
  ]
}

# findPublicKeys keys

GET /dashboardapi/v2/keys/find_public_keys/

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
created string(date-time) true
device_name string true
state string true
bearduser_id string(uuid) true
last_seen object true
» success boolean true
» ip string true
» key_id string(uuid) true
» bearduser_id string(uuid) true
» datetime string(date-time) true
» location object true
» user_agent string true
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "device_name": "string",
  "state": "string",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "last_seen": {
    "success": true,
    "ip": "string",
    "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5",
    "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
    "datetime": "2019-08-24T14:15:22Z",
    "location": {},
    "user_agent": "string"
  }
}

# revoke keys

POST /dashboardapi/v2/keys/{id}/revoke/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Messages management

# list messages

GET /dashboardapi/v2/messages/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) true
» owner_id string(uuid) true
» created string(date-time) true
» meta_data object true
» allow_download boolean true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
      "created": "2019-08-24T14:15:22Z",
      "meta_data": {},
      "allow_download": true
    }
  ]
}

# retrieve messages

GET /dashboardapi/v2/messages/{id}/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
owner_id string(uuid) true
created string(date-time) true
meta_data object true
allow_download boolean true
is_everyone_revoked string false
nb_read string false
self_destruct_date string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  "created": "2019-08-24T14:15:22Z",
  "meta_data": {},
  "allow_download": true,
  "is_everyone_revoked": "string",
  "nb_read": "string",
  "self_destruct_date": "string"
}

# availableAdminkeys messages

GET /dashboardapi/v2/messages/{id}/available_adminkeys/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# recipients messages

GET /dashboardapi/v2/messages/{id}/recipients/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
user_id string(uuid) true
Response body examples

200 Response

{
  "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

# addEncryptedMessageKey messages

POST /dashboardapi/v2/messages/{id}/add_encrypted_message_key/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.
encrypted_message_keys body [object] true
» created_for_key body string(uuid) true
» encrypted_message_key body string true
» created_for_key_hash body string false
Request body samples
{
  "encrypted_message_keys": [
    {
      "created_for_key": "8c64c67e-80c8-4b6b-bb2c-9ae3b4ae7b04",
      "encrypted_message_key": "string",
      "created_for_key_hash": ""
    }
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# addEntrustedMessageKey messages

POST /dashboardapi/v2/messages/{id}/add_entrusted_message_key/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.
email body string(email) false
created_for_value body string false
created_for_type body string false
message_key body string true
created_for_additional_factor body object false
Request body samples
{
  "email": "user@example.com",
  "created_for_value": "string",
  "created_for_type": "string",
  "message_key": "string",
  "created_for_additional_factor": {}
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# allowDownload messages

POST /dashboardapi/v2/messages/{id}/allow_download/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.
allow_download body boolean true
Request body samples
{
  "allow_download": true
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# findRecoverableMessageKey messages

POST /dashboardapi/v2/messages/{id}/find_recoverable_message_key/

# Parameters

Name In Type Required Description
id path string true
bearduser_id body string(uuid) true
adminkey_id body string(uuid) true
Request body samples
{
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "adminkey_id": "4fab4ba1-c221-4702-93a3-b774838ea8bd"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Revoke a message

POST /dashboardapi/v2/messages/{id}/revoke/

If multiple recipients or all are provided, the response body format is changed to :

Variable Type Description
revoked String[] Users that have been revoked for corresponding message
errored String[] Users that has not been revoked because something went wrong (eg. : if the user does not exist)

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.
user body string(uuid) false
users body [string] false
email body string false
entrusted_created_for_value body string false
entrusted_created_for_type body string false
entrusted_users body [object] false
» entrusted_created_for_value body string false
» entrusted_created_for_type body string false
all body boolean false
Request body samples
{
  "user": "76f62a58-5404-486d-9afc-07bded328704",
  "users": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "email": "string",
  "entrusted_created_for_value": "string",
  "entrusted_created_for_type": "string",
  "entrusted_users": [
    {
      "entrusted_created_for_value": "string",
      "entrusted_created_for_type": "string"
    }
  ],
  "all": true
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# selfDestructDate messages

POST /dashboardapi/v2/messages/{id}/self_destruct_date/

# Parameters

Name In Type Required Description
id path string true
recipient query string(uuid) false Only match Messages which have this user or group as recipient. If recipient is a user and the user has access to the Message indirectly, through a group, it will only show if the user has already accessed the Message at least once.
owner query string(uuid) false Only match Messages which have this user as owner, which means that they have sent the message.
meta_data query string false Only match Messages whose meta data includes this.
hide_revoked query string false If set exactly to true, messages that are revoked for given recipient will be filtered out.
only_visible query boolean false If true, only match Messages created by a user, and not service messages.
date body string(date)¦null true
Request body samples
{
  "date": "2019-08-24"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Message access management

# list messageaccesses

GET /dashboardapi/v2/messageaccesses/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
message query string(uuid) true Only match MessageAccesses related to this message.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» created string(date-time) true
» added_by_id string(uuid) true
» message_id string(uuid) true
» bearduser_id string(uuid) true
» path [string] true
» read_first string(date-time) true
» read_last string(date-time) true
» read_time integer true
» revoked boolean true
» revoked_date string(date-time) true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "created": "2019-08-24T14:15:22Z",
      "added_by_id": "d510dc72-551b-40c1-bb6a-2bcfb13ad89f",
      "message_id": "d7d9d9fd-478f-40e6-b651-49b7f19878a2",
      "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
      "path": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "read_first": "2019-08-24T14:15:22Z",
      "read_last": "2019-08-24T14:15:22Z",
      "read_time": 0,
      "revoked": true,
      "revoked_date": "2019-08-24T14:15:22Z"
    }
  ]
}

# Entrusted Keys

# list entrustedmessagekeys

GET /dashboardapi/v2/entrustedmessagekeys/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
message query string(uuid) true Message ID of the requested message.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» created string(date-time) true
» created_for_value string true
» created_for_type string true
» converted_for_id string(uuid) true
» read_first string(date-time) true
» read_last string(date-time) true
» read_time integer true
» revoked boolean true
» revoked_date string(date-time) true
» replies [string] true
» created_for_additional_factor string false
» created_for string false
» created_for_email string false
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "created": "2019-08-24T14:15:22Z",
      "created_for_value": "string",
      "created_for_type": "string",
      "converted_for_id": "a2bcc1f6-dae3-48fe-b858-28d4824682c1",
      "read_first": "2019-08-24T14:15:22Z",
      "read_last": "2019-08-24T14:15:22Z",
      "read_time": 0,
      "revoked": true,
      "revoked_date": "2019-08-24T14:15:22Z",
      "replies": [
        "2019-08-24T14:15:22Z"
      ],
      "created_for_additional_factor": "string",
      "created_for": "string",
      "created_for_email": "string"
    }
  ]
}

# Anonymous access management

Some actions can be performed on client side (or any other third party), without sharing any critical credential.

For authenticating those actions, you can have a shared secret between your backend and DashboardAPI, enabling your backend generating a JWT with restricted privileges.

A JWTSharedSecret is a secret with restricted permissions (you can limit what privilege a JWTSharedSecret can put in a JWT). The following permissions are available :

Permission ID Permission name Endpoint
-1 PERMISSION_ALL /api/anonymous/*
0 PERMISSION_ANONYMOUS_CREATE_MESSAGE /api/anonymous/message_create/
1 PERMISSION_ANONYMOUS_RETRIEVE_KEYS /api/anonymous/key_find/
2 PERMISSION_ANONYMOUS_RETRIEVE_SIGCHAIN /api/anonymous/sigchain_find/

# List all JWTSharedSecret

GET /dashboardapi/v2/jwtsharedsecret/

List all JWTSharedSecret

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) false
» created string(date-time) false
» shared_secret string false
» permissions [integer] true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created": "2019-08-24T14:15:22Z",
      "shared_secret": "string",
      "permissions": [
        -1
      ]
    }
  ]
}

# Generate a JWTSharedSecret

POST /dashboardapi/v2/jwtsharedsecret/

Generate a JWTSharedSecret

# Parameters

Name In Type Required Description
id body string(uuid) false
created body string(date-time) false
shared_secret body string false
permissions body [integer] true
Request body samples
{
  "permissions": [
    -1
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
id string(uuid) false
created string(date-time) false
shared_secret string false
permissions [integer] true
Response body examples

201 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "shared_secret": "string",
  "permissions": [
    -1
  ]
}

# Delete a JWTSharedSecret

DELETE /dashboardapi/v2/jwtsharedsecret/{id}/

Delete a JWTSharedSecret

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
204 No Content (opens new window) none

# Prevalidated connectors token

# list domainvalidationkeys

GET /dashboardapi/v2/domainvalidationkeys/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string true
» key string true
» domain string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "string",
      "key": "string",
      "domain": "string"
    }
  ]
}

# refresh domainvalidationkeys

POST /dashboardapi/v2/domainvalidationkeys/{id}/refresh/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Email and SDK connectors

# list connectors

GET /dashboardapi/v2/connectors/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
user query string(uuid) true User ID of the requested user.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) true
» type string true
» state string true
» value string true
» created string(date-time) true
» updated string(date-time) true
» bearduser_id string(uuid) true
» is_primary_email string false
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "string",
      "state": "string",
      "value": "string",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
      "is_primary_email": "string"
    }
  ]
}

# create connectors

POST /dashboardapi/v2/connectors/

# Parameters

Name In Type Required Description
type body string
Allowed values: "EM", "AP"
true
value body string true
bearduser_id body string(uuid) true
domainvalidationkey_id body string(uuid) true
force body boolean true
Request body samples
{
  "type": "EM",
  "value": "string",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "domainvalidationkey_id": "7bb1b8f4-02bd-4268-8cd6-3f9663c5c430",
  "force": true
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
id string(uuid) true
type string true
state string true
value string true
created string(date-time) true
updated string(date-time) true
bearduser_id string(uuid) true
is_primary_email string false
Response body examples

201 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "string",
  "state": "string",
  "value": "string",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "is_primary_email": "string"
}

# setPrimary connectors

POST /dashboardapi/v2/connectors/{id}/set_primary/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# destroy connectors

DELETE /dashboardapi/v2/connectors/{id}/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
204 No Content (opens new window) none

# Event logs

# list eventlogs

GET /dashboardapi/v2/eventlogs/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
date_gt query string(date-time) false Only match events more recent than provided date.
date_lt query string(date-time) false Only match events older than provided date.
user query string(uuid) false Only match events related to this user.
message query string(uuid) false Only match events related to this message.
device query string(uuid) false Only match events related to this device.
email query string(email) false Only match events related to this email.
action_in query string false Only match events of these action types. Multiple actions, separeted by | can be provided.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» date string(date-time) true
» user_id string(uuid) true
» user2_id string(uuid) true
» device_id string(uuid) true
» message object true
»» id string(uuid) true
»» owner_id string(uuid) true
»» created string(date-time) true
»» meta_data object true
»» allow_download boolean true
» email string true
» ip string true
» geoip object true
» action string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "date": "2019-08-24T14:15:22Z",
      "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
      "user2_id": "d30342ed-2e79-4325-86c2-755c2ad935ba",
      "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940",
      "message": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
        "created": "2019-08-24T14:15:22Z",
        "meta_data": {},
        "allow_download": true
      },
      "email": "string",
      "ip": "string",
      "geoip": {},
      "action": "string"
    }
  ]
}

# retrieve eventlogs

GET /dashboardapi/v2/eventlogs/{id}/

# Parameters

Name In Type Required Description
id path string true
date_gt query string(date-time) false Only match events more recent than provided date.
date_lt query string(date-time) false Only match events older than provided date.
user query string(uuid) false Only match events related to this user.
message query string(uuid) false Only match events related to this message.
device query string(uuid) false Only match events related to this device.
email query string(email) false Only match events related to this email.
action_in query string false Only match events of these action types. Multiple actions, separeted by | can be provided.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
date string(date-time) true
user_id string(uuid) true
user2_id string(uuid) true
device_id string(uuid) true
message object true
» id string(uuid) true
» owner_id string(uuid) true
» created string(date-time) true
» meta_data object true
» allow_download boolean true
email string true
ip string true
geoip object true
action string true
Response body examples

200 Response

{
  "date": "2019-08-24T14:15:22Z",
  "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  "user2_id": "d30342ed-2e79-4325-86c2-755c2ad935ba",
  "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940",
  "message": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
    "created": "2019-08-24T14:15:22Z",
    "meta_data": {},
    "allow_download": true
  },
  "email": "string",
  "ip": "string",
  "geoip": {},
  "action": "string"
}

# export eventlogs

POST /dashboardapi/v2/eventlogs/export/

# Parameters

Name In Type Required Description
date_min body string(date-time) true
date_max body string(date-time) true
Request body samples
{
  "date_min": "2019-08-24T14:15:22Z",
  "date_max": "2019-08-24T14:15:22Z"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Login logs

# list loginlogs

GET /dashboardapi/v2/loginlogs/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
user query string(uuid) true Only match LoginLogs related to this user.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» success boolean true
» ip string true
» key_id string(uuid) true
» bearduser_id string(uuid) true
» datetime string(date-time) true
» location object true
» user_agent string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "success": true,
      "ip": "string",
      "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5",
      "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
      "datetime": "2019-08-24T14:15:22Z",
      "location": {},
      "user_agent": "string"
    }
  ]
}

# retrieve loginlogs

GET /dashboardapi/v2/loginlogs/{id}/

# Parameters

Name In Type Required Description
id path string true
user query string(uuid) true Only match LoginLogs related to this user.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
success boolean true
ip string true
key_id string(uuid) true
bearduser_id string(uuid) true
datetime string(date-time) true
location object true
user_agent string true
Response body examples

200 Response

{
  "success": true,
  "ip": "string",
  "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "datetime": "2019-08-24T14:15:22Z",
  "location": {},
  "user_agent": "string"
}

# Backup admin keys management

# list adminkeys

GET /dashboardapi/v2/adminkeys/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) false
» created string(date-time) false
» name string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created": "2019-08-24T14:15:22Z",
      "name": "string"
    }
  ]
}

# create adminkeys

POST /dashboardapi/v2/adminkeys/

# Parameters

Name In Type Required Description
id body string(uuid) false
created body string(date-time) false
name body string true
encrypted_admin_key body string true
public_admin_key body string true
Request body samples
{
  "name": "string",
  "encrypted_admin_key": "string",
  "public_admin_key": "string"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
id string(uuid) false
created string(date-time) false
name string true
encrypted_admin_key string true
public_admin_key string true
Response body examples

201 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "name": "string",
  "encrypted_admin_key": "string",
  "public_admin_key": "string"
}

# retrieve adminkeys

GET /dashboardapi/v2/adminkeys/{id}/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) false
created string(date-time) false
name string true
encrypted_admin_key string true
public_admin_key string true
stats string false
created_by string false
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "name": "string",
  "encrypted_admin_key": "string",
  "public_admin_key": "string",
  "stats": "string",
  "created_by": "string"
}

# notifyMissing adminkeys

POST /dashboardapi/v2/adminkeys/{id}/notify_missing/

# Parameters

Name In Type Required Description
id path string true

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Encrypted backup keys management

# findKey encryptedbackupkeys

POST /dashboardapi/v2/encryptedbackupkeys/find_key/

# Parameters

Name In Type Required Description
adminkey body string(uuid) true
bearduser body string(uuid) true
Request body samples
{
  "adminkey": "cc15f562-0196-4a4a-bcba-457a7d18d401",
  "bearduser": "baffd5eb-33a6-4b11-a1b9-1905f3697705"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# renew encryptedbackupkeys

POST /dashboardapi/v2/encryptedbackupkeys/{id}/renew/

# Parameters

Name In Type Required Description
id path string true
transaction_data body object true
encryption_pub_key body string false
force body boolean true
encrypted_backup_key body string true
Request body samples
{
  "transaction_data": {},
  "encryption_pub_key": "string",
  "force": true,
  "encrypted_backup_key": "string"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Lost accounts management

# list lostaccounts

GET /dashboardapi/v2/lostaccounts/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» id string(uuid) true
» created string(date-time) true
» email string true
» device_name string true
» bearduser_id string(uuid) true
» state integer true
» created_device_id string(uuid) true
» encryption_pub_key string true
» signing_pub_key string true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created": "2019-08-24T14:15:22Z",
      "email": "string",
      "device_name": "string",
      "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
      "state": 0,
      "created_device_id": "008bfe01-cdd7-4540-93da-c3411ba728ac",
      "encryption_pub_key": "string",
      "signing_pub_key": "string"
    }
  ]
}

# retrieve lostaccounts

GET /dashboardapi/v2/lostaccounts/{id}/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
id string(uuid) true
created string(date-time) true
email string true
device_name string true
bearduser_id string(uuid) true
state integer true
created_device_id string(uuid) true
encryption_pub_key string true
signing_pub_key string true
Response body examples

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "created": "2019-08-24T14:15:22Z",
  "email": "string",
  "device_name": "string",
  "bearduser_id": "c1728d10-d167-4968-8803-696351d3e438",
  "state": 0,
  "created_device_id": "008bfe01-cdd7-4540-93da-c3411ba728ac",
  "encryption_pub_key": "string",
  "signing_pub_key": "string"
}

# destroy lostaccounts

DELETE /dashboardapi/v2/lostaccounts/{id}/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.

# Responses

Status Meaning Description
204 No Content (opens new window) none

# missingEncryptedMessageKeys lostaccounts

GET /dashboardapi/v2/lostaccounts/{id}/missing_encrypted_message_keys/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

200 Response

{
  "status": "ok"
}

# missingEncryptedMessageKeys lostaccounts (POST)

POST /dashboardapi/v2/lostaccounts/{id}/missing_encrypted_message_keys/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.
keys body [object] true
» message_id body string true
» token body string true
» created_for_key_hash body string false
Request body samples
{
  "keys": [
    {
      "message_id": "string",
      "token": "string",
      "created_for_key_hash": ""
    }
  ]
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# createDevice lostaccounts

POST /dashboardapi/v2/lostaccounts/{id}/create_device/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.
device_name body string true
Request body samples
{
  "device_name": "string"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# validateSigchain lostaccounts

POST /dashboardapi/v2/lostaccounts/{id}/validate_sigchain/

# Parameters

Name In Type Required Description
id path string true
state_in query integer
Allowed values: 0, 1, 2, 3, 4, 5, 6
false Only match LostAccounts related to this state. Multiple state can be provided by sperating them by |.
sigchain_transaction body object true
force body boolean true
Request body samples
{
  "sigchain_transaction": {},
  "force": true
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# Invited Emails

# list invitedemails

GET /dashboardapi/v2/invitedemails/

# Parameters

Name In Type Required Description
cursor query string false The pagination cursor value.
page query integer false A page number within the paginated result set.
use_cursor query string false If provided (usually set to true), will use a cursor pagination mechanism.🚨 Page based pagination is now deprecated.
state query integer
Allowed values: 0, 1, 2
false Only match InvitedEmails of this state.
email query string(email) false Only match InvitedEmails related to this email.

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
count integer false Page based pagination based only. Total count of results
next string(uri)¦null false Page based pagination based only. Next page URL
previous string(uri)¦null false Page based pagination based only. Previous page URL
next_cursor string¦null false Cursor based pagination based only. Cursor for next page.
previous_cursor string¦null false Cursor based pagination based only. Cursor for previous page.
results array false
» email string(email) true
» state string true
» invited_by string true
» created_at string(date-time) true
» used_at string(date-time) true
» disabled_at string(date-time) true
Response body examples

200 Response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "next_cursor": "string",
  "previous_cursor": "string",
  "results": [
    {
      "email": "user@example.com",
      "state": "string",
      "invited_by": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "used_at": "2019-08-24T14:15:22Z",
      "disabled_at": "2019-08-24T14:15:22Z"
    }
  ]
}

# create invitedemails

POST /dashboardapi/v2/invitedemails/

# Parameters

Name In Type Required Description
email body string(email) true
state body string true
invited_by body string true
created_at body string(date-time) true
used_at body string(date-time) true
disabled_at body string(date-time) true
Request body samples
{
  "email": "user@example.com",
  "state": "string",
  "invited_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "used_at": "2019-08-24T14:15:22Z",
  "disabled_at": "2019-08-24T14:15:22Z"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
email string(email) true
state string true
invited_by string true
created_at string(date-time) true
used_at string(date-time) true
disabled_at string(date-time) true
Response body examples

201 Response

{
  "email": "user@example.com",
  "state": "string",
  "invited_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "used_at": "2019-08-24T14:15:22Z",
  "disabled_at": "2019-08-24T14:15:22Z"
}

# licences invitedemails

GET /dashboardapi/v2/invitedemails/licences/

# Responses

Status Meaning Description
200 OK (opens new window) none
# Status Code 200
Name Type Required Description
email string(email) true
state string true
invited_by string true
created_at string(date-time) true
used_at string(date-time) true
disabled_at string(date-time) true
Response body examples

200 Response

{
  "email": "user@example.com",
  "state": "string",
  "invited_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "used_at": "2019-08-24T14:15:22Z",
  "disabled_at": "2019-08-24T14:15:22Z"
}

# disable invitedemails

POST /dashboardapi/v2/invitedemails/disable/

# Parameters

Name In Type Required Description
email body string(email) true
Request body samples
{
  "email": "user@example.com"
}

# Responses

Status Meaning Description
201 Created (opens new window) none
# Status Code 201
Name Type Required Description
status string
Allowed values: "ok"
true
Response body examples

201 Response

{
  "status": "ok"
}

# is-alive

# listis_alives

GET /is_alive/

# Responses

Status Meaning Description
200 OK (opens new window) none

# dashboardapi

# statusTwoFA

GET /dashboardapi/v2/twofa/status/

# Responses

Status Meaning Description
200 OK (opens new window) none

# confirmTwoFA

POST /dashboardapi/v2/twofa/confirm/

# Responses

Status Meaning Description
201 Created (opens new window) none

# removeTwoFA

POST /dashboardapi/v2/twofa/remove/

# Responses

Status Meaning Description
201 Created (opens new window) none

# resetRecoverCodesTwoFA

POST /dashboardapi/v2/twofa/reset_recover_codes/

# Responses

Status Meaning Description
201 Created (opens new window) none

# setTwoFA

POST /dashboardapi/v2/twofa/set/

# Responses

Status Meaning Description
201 Created (opens new window) none