Skip to content

Create the first admin

POST
/api/v1/setup
curl --request POST \
--url http://localhost:8080/api/v1/setup \
--header 'Content-Type: application/json' \
--data '{ "setupToken": "example", "name": "example", "password": "example" }'

Works only while the server has no accounts. The setup token is printed in the server’s log at startup, so only someone who can read the log can claim the server, unless the deployment set its own in CHEK_SETUP_TOKEN.

Media typeapplication/json
object
setupToken
required
string
name
required
string
>= 1 characters <= 64 characters
password
required

At least 8 characters and at most 1024 bytes.

string
>= 8 characters

Example generated

{
"setupToken": "example",
"name": "example",
"password": "example"
}

The admin was created and signed in.

Media typeapplication/json
object
token
required

Send as Authorization: Bearer <token>.

string
user
required
object
id
required
integer format: int64
name
required
string
role
required
string
Allowed values: admin reader
libraryIds
required

Libraries a reader may open. Empty for admins, who see every library.

Array<integer>
createdAt
required
string format: date-time
demo

True on /api/v1/me for a shared demo account, which can’t change its settings. Absent otherwise.

boolean

Example

{
"user": {
"role": "admin"
}
}

The request was malformed.

Media typeapplication/json
object
code
required
string
Allowed values: bad_request unauthorized forbidden not_found unavailable scan_in_progress content_changed already_set_up name_taken last_admin progress_conflict too_many_attempts not_linked identity_taken last_sign_in provider_unavailable too_many_sign_ins repository_exists repository_not_allowed repository_unreadable repository_needs_token repository_needs_password repository_needs_credentials repository_credentials_refused extension_invalid source_failed source_unavailable source_check_failed internal
message
required

Explains the problem to a developer.

string

Example

{
"code": "bad_request"
}

The signed-in user may not do this. demo_account when the user is a shared demo account, named in CHEK_DEMO_USERS, which can’t change its password, sessions, sign-in providers, extensions or annotations.

Media typeapplication/json
object
code
required
string
Allowed values: bad_request unauthorized forbidden not_found unavailable scan_in_progress content_changed already_set_up name_taken last_admin progress_conflict too_many_attempts not_linked identity_taken last_sign_in provider_unavailable too_many_sign_ins repository_exists repository_not_allowed repository_unreadable repository_needs_token repository_needs_password repository_needs_credentials repository_credentials_refused extension_invalid source_failed source_unavailable source_check_failed internal
message
required

Explains the problem to a developer.

string

Example

{
"code": "bad_request"
}

The server already has an admin.

Media typeapplication/json
object
code
required
string
Allowed values: bad_request unauthorized forbidden not_found unavailable scan_in_progress content_changed already_set_up name_taken last_admin progress_conflict too_many_attempts not_linked identity_taken last_sign_in provider_unavailable too_many_sign_ins repository_exists repository_not_allowed repository_unreadable repository_needs_token repository_needs_password repository_needs_credentials repository_credentials_refused extension_invalid source_failed source_unavailable source_check_failed internal
message
required

Explains the problem to a developer.

string

Example

{
"code": "bad_request"
}

The server failed; details are in its log.

Media typeapplication/json
object
code
required
string
Allowed values: bad_request unauthorized forbidden not_found unavailable scan_in_progress content_changed already_set_up name_taken last_admin progress_conflict too_many_attempts not_linked identity_taken last_sign_in provider_unavailable too_many_sign_ins repository_exists repository_not_allowed repository_unreadable repository_needs_token repository_needs_password repository_needs_credentials repository_credentials_refused extension_invalid source_failed source_unavailable source_check_failed internal
message
required

Explains the problem to a developer.

string

Example

{
"code": "bad_request"
}