Skip to main content

User REST API

The user REST API allows System Administrators to do the following.

In the following sections, all partial URLs are relative to IQ Server's base URL and we issue requests using the cURL tool. Also, all request/response bodies are JSON content (formatted here for readability) and any endpoints that return a user's details exclude their password for security.

Note

When enabled the audit log records changes to user access.

Get all user details

All user details can be retrieved by making an HTTP GET request to

GET /api/v2/users

An optional "realm" query parameter can be added to retrieve all user details for users belonging to the given securityrealm. If omitted, the realm will default to be the Internal realm. Supported values include "Internal" and "SAML".

For example

curl -u admin:admin123 http://localhost:8070/api/v2/users?realm=Internal

gives

{
        "users": [
                {
                        "username": "admin",
                        "firstName": "Admin",
                        "lastName": "BuiltIn",
                        "email": "admin@localhost"
                },
                {
                        "username": "bob",
                        "firstName": "Bob",
                        "lastName": "Smith",
                        "email": "bobsmith@domain.com"
                }
        ]
}

Get user details

A user's details can be retrieved by making an HTTP GET request to

GET /api/v2/users/{username}

An optional "realm" query parameter can be added to retrieve a user's details in the given security realm. If omitted, the realm will default to be the Internal realm. Supported values include "Internal" and "SAML".

For example

curl -u admin:admin123 'http://localhost:8070/api/v2/users/bob?realm=Internal'

gives

{
  "username": "bob",
  "firstName": "Bob",
  "lastName": "Smith",
  "email": "bobsmith@domain.com"
}

Create users

A user can be created by making an HTTP POST request to

POST /api/v2/users

with a body specifying the user's details.

For example, using the body

{
  "username": "ted",
  "password": "secret",
  "firstName": "Ted",
  "lastName": "Baker",
  "email": "tedbaker@example.com"
}

Note that all of these fields are required.

curl -u admin:admin123 -X POST -H 'Content-Type: application/json' 'http://localhost:8070/api/v2/users' -d '{"username": "ted","password": "secret","firstName": "Ted","lastName": "Baker","email": "tedbaker@example.com"}'

gives

...
HTTP/1.1 204 No Content
...

Update users

A user can be updated by making an HTTP PUT request to

PUT /api/v2/users/{username}

with a body specifying the user's details.

For example, using the body

{
  "firstName": "Teddy",
  "lastName": "Norman",
  "email": "tnorman@example.com"
}

Note that only the "username" in the path is required, any unspecified fields will remain unchanged. If a "username" is also provided in the body, then it must match that in the path.

Also, note that a user's "username" and/or "password" cannot be updated this way.

curl -u admin:admin123 -X PUT -H 'Content-Type: application/json' 'http://localhost:8070/api/v2/users/ted' -d '{"firstName": "Teddy","lastName": "Norman","email": "tnorman@example.com"}'

gives

{
  "username": "ted",
  "firstName": "Teddy",
  "lastName": "Norman",
  "email": "tnorman@example.com"
}

An example of a partial update would be

curl -u admin:admin123 -X PUT -H 'Content-Type: application/json' 'http://localhost:8070/api/v2/users/ted' -d '{"email": "tnorman@new.com"}'

which gives

{
  "username": "ted",
  "firstName": "Teddy",
  "lastName": "Norman",
  "email": "tnorman@new.com"
}

Delete users

A user can be deleted by making an HTTP DELETE request to

DELETE /api/v2/users/{username}

An optional "realm" query parameter can be added to delete a user from the given security realm. If omitted, the realm will default to be the Internal realm. Supported values include "Internal" and "SAML".

For example

curl -u admin:admin123 -X DELETE 'http://localhost:8070/api/v2/users/bob?realm=Internal'

gives

...
HTTP/1.1 204 No Content
...