Skip to content

MideyeServer REST API Errors and Problem Types

When a MideyeServer REST API call fails, the server answers with a JSON error body in the RFC 9457 Problem Details format (application/problem+json). The type field is a URL of the form https://www.mideye.com/problem/<name>. That URL leads to the matching section on this page.

You will usually see these errors when you call the API directly, for example from Ansible, Terraform, or scripts that automate the setup wizard. The web interface shows the same errors as messages in the page.

{
"type": "https://www.mideye.com/problem/root-user-password-invalid",
"title": "Bad Request",
"status": 400,
"detail": "Password must be minimum 9 characters, including at least one lowercase letter, one uppercase letter, one digit, one special character",
"message": "error.http.400",
"path": "/api/setup/complete"
}
FieldDescription
typeIdentifies the kind of error. Use it (not title) when your automation needs to branch on the error.
titleShort summary. Usually the HTTP reason phrase, such as Bad Request.
statusHTTP status code, repeated from the response.
detailHuman-readable explanation of what went wrong, when the server has one. Can be null.
messageTranslation key used by the web interface, such as error.validation.
pathThe API path that was called.
fieldErrorsOnly for constraint-violation: a list of { objectName, field, message } entries, one per invalid field.
paramsOnly for parameterized: values that are substituted into the message.

Status: varies (400, 403, 404, 500 …)

The generic error type. The server uses it when no more specific type applies, for example when a requested record does not exist, when you lack permission, or when an unexpected server error occurs. Read status, message, and detail to find the cause.

If status is 500, check the server log (Logs → Log Files in the web interface) around the time of the request.

Status: 400

The request body failed validation. Typical causes are a missing required field, a value that is too long, or a malformed IP address or hostname. The fieldErrors list names each invalid field. It is also used for invalid RADIUS clients (no name, or neither IP address nor NAS identifier), LDAP profiles, and Network Policy Servers.

Fix: correct the listed fields and send the request again.

Status: 400

A validation or rate-limit error whose message needs extra values. The message field holds the error key (for example error.validation) and params holds the values.

Fix: read message and params to see which value was rejected.

Status: 404

The record you asked for does not exist, for example a user, RADIUS client, or LDAP profile ID that has been deleted or never existed. This value appears in the message field of a problem-with-message response.

Fix: check the ID in the request URL.

Status: 400

A password was rejected. This happens when:

  • the current password given in a password change is wrong,
  • a new password is empty, shorter than 4, or longer than 100 characters, or
  • the password policy the server should check against is missing.

Fix: check the current password, and make sure the new one meets the password policy under Users and Tokens → Mideye User Settings.

Status: 400 · Endpoint: POST /api/setup/complete

The root password sent during initial setup does not meet the user-set password policy. On a new installation the default policy requires:

  • at least 9 characters,
  • at least one lowercase letter,
  • at least one uppercase letter,
  • at least one digit, and
  • at least one special character (anything other than a–z, A–Z, 0–9).

Newer server versions list the rules the password must meet in detail.

Fix: choose a password that meets every rule and run setup again.

Status: 400 · Endpoints: /api/setup/*

The setup API was called on a server that has already been configured. The setup endpoints only work while the server is in the SETUP_REQUIRED state (see GET /api/setup/check-status).

Fix: nothing needs to be done if the server is already set up. To change the configuration, use the web interface or the regular API. Make automation idempotent by checking /api/setup/check-status before calling /api/setup/complete.

radius-client-and-radius-shared-secret-required

Section titled “radius-client-and-radius-shared-secret-required”

Status: 400 · Endpoint: POST /api/setup/complete

The setup request contained a RADIUS client without a RADIUS shared secret, or a shared secret without a client. Setup accepts both or neither.

Fix: send both the RADIUS client and its shared secret, or leave both out and add them after setup under RADIUS Settings → RADIUS Clients.

Status: 400

The same RADIUS attribute is defined more than once in a RADIUS response configuration.

Fix: remove the duplicate attribute and save again.

email-already-used, login-already-used, email-not-found

Section titled “email-already-used, login-already-used, email-not-found”

Status: 400

Reserved problem types. Current MideyeServer versions do not return them. If you see one, you are running an old version. The name describes the error: the email address or username is already taken, or no user has that email address.