Skip to content

User management API

You can use user management API requests to integrate Watcher with billing or to develop your own application/web interface for Watcher, etc. For example, if Provider creates Organizations, presets and users from the Watcher interface, then the billing will most likely need to request information about created users and which Organization(s) they are added to, user permissions assigned. If billing is a control system, implement the requests for creating, changing and deleting users as well as permissions assigning.

Please refer to Integration with existing billing system for details on cameras provisioning and billing integration. You can also find useful: Folder management API .

This section provides examples of API requests for managing users. Click here to see the full list of response and request parameters.

You should use one of the keys for the API request authorization. The examples in this section are given with the the x-vsaas-session key: this means that the user on whose behalf the requests are made must have the rights to perform the corresponding actions. Please refer to API request authorization ways for details on the key types.

Creating a user in the Organization

If you have the list of users in csv, import all users at once as described in User import API.

If you are adding one user at a time, use this query

POST YOUR_WATCHER_URL/vsaas/api/v2/users?trace=sql

Required parameters:

  • login (string) — the username to log into the Watcher app/web interface.
  • password (string) — user password

Optional parameters for settings on the Parameters tab in the interface (see Managing users and their permissions for details):

  • organization_id (integer) — ID of the Organization to add the user to. If not specified, the user will be added to the Default Organization. You can add the user into one Organization at creation. If you want to add the user to several Organizations, use the adding user request shown below after creation.
  • can_edit_organizations (boolean) — true if the user can edit Organizations, default is false.
  • can_view_organizations (boolean) — true if the user can view Organizations, default is false.
  • enabled (boolean) — whether the user is active or not, default is true
  • is_admin (boolean) — whether the user is Watcher Administrator, default is false.
  • readonly (boolean) — enables read-only mode for the user, default is false.
  • max_sessions (integer) — maximum number of sessions.
  • can_edit_settings (boolean) — whether the user can manage Watcher settings (on the Settings page), default is false. There is no corresponding setting in the interface.

Other optional parameters:

  • apikey (string) — user's API key which is one of the ways to authorize an API request. See API request authorization ways for details.
  • locale (string) — interface language
  • name (string) — user name
  • note (string) — note
  • notification_email (string (email)) — user's e-mail address
  • phone (string) — user's phone number

Example

curl --request POST \
--url 'http://localhost/vsaas/api/v2/users?trace=sql' \
--header 'content-type: application/json' \
--header 'x-vsaas-session: <vsaas_session>' \
--data '{
"login": "test",
"password": "test",
"organization_id": 1
}'

The response will contain all the parameters of the created user.

Click here to see the example response Please note that the Organizations array is returned in the response.
{
    "apikey": null,
    "id": 17,
    "can_view_organizations": false,
    "max_sessions": null,
    "name": null,
    "locale": "",
    "login": "test",
    "external_id": null,
    "organizations": [
        1
    ],
    "readonly": false,
    "can_edit_organizations": false,
    "note": null,
    "is_admin": false,
    "authorized_ip": null,
    "phone": null,
    "notification_email": null,
    "monitoring": false,
    "enabled": true,
    "can_edit_settings": false,
    "domain_id": 1
}

Getting a list of users in the Organization

Use the following request to get the list of users in the Organization

GET YOUR_WATCHER_URL/vsaas/api/v2/organizations/(organization ID)/users

Example

curl --request GET \
--url http://localhost/vsaas/api/v2/organizations/1/users \
--header 'x-vsaas-session: <vsaas_session>'

The response will contain some general parameters of users and their permissions within the Organization.

Click here to see the example response
[
    {
        "can_edit_organization_cameras": true,
        "login": "admin",
        "can_edit_organization_plists": true,
        "notification_email": "user.name@mail.org",
        "can_view_organization_stats": true,
        "folders_permissions": [],
        "can_edit_organization_users": true,
        "user_id": 1,
        "can_view_organization_plists": true
    },
    {
        "can_edit_organization_cameras": false,
        "login": "Subscriber 1",
        "can_edit_organization_plists": false,
        "notification_email": null,
        "can_view_organization_stats": false,
        "folders_permissions": [
            {
                "folder_id": 1,
                "can_view_dvr": 10,
                "can_use_ptz": 1,
                "can_use_actions": null
            }
        ],
        "can_edit_organization_users": false,
        "user_id": 14,
        "can_view_organization_plists": false
    }
]

Adding the user to the Organization

Use the following request to add an existing user to the Organization

POST YOUR_WATCHER_URL/vsaas/api/v2/organizations/(organization ID)/users

Request parameters:

  • user_id (integer) — required parameter, identifier of the added user
  • login (string) — username
  • notification_email (string) — user's e-mail address
  • can_view_organization_plists (boolean) — permissions to view the list of all Organizations
  • can_edit_organization_plists (boolean) — permissions to edit general settings of all Organizations
  • can_edit_organization_users (boolean) — permissions to edit users
  • can_edit_organization_cameras (boolean) — permissions to edit cameras within the Organization
  • can_view_organization_stats (boolean) — permissions to view statistics
  • folders_permissions (array) — a list of the Organization's folders to which the user has access

Example

curl --request POST \
--url http://localhost/vsaas/api/v2/organizations/1/users \
--header 'content-type: application/json' \
--header 'x-vsaas-session: <vsaas_session>' \
--data ' {
"user_id": 2,
"can_edit_organization_cameras": true
}'

The response will contain some general parameters of the user and their permissions within the Organization.

Click here to see the example response
{
    "can_edit_organization_plists": false,
    "can_edit_organization_users": false,
    "user_id": 2,
    "notification_email": null,
    "can_edit_organization_cameras": true,
    "can_view_organization_stats": false,
    "folders_permissions": [],
    "can_view_organization_plists": false,
    "login": "test"
}

Getting permissions of one user

Use the following request to get the user's permissions

GET YOUR_WATCHER_URL/vsaas/api/v2/organizations/(organization ID)/users/(user ID)

Example

curl --request GET \
--url http://localhost/vsaas/api/v2/organizations/1/users/2/ \
--header 'x-vsaas-session: <vsaas_session>' 

The response will contain some general parameters of the user and their permissions within the Organization similar to the example above.

Changing the user's permissions within the Organization

Use the following request to change the user's permissions within the Organization

PUT YOUR_WATCHER_URL/vsaas/api/v2/organizations/(organization ID)/users/(user ID)

The request parameters are the same as when adding an existing user to the Organization. You can include only those parameters that need to be changed to the request body.

Example

curl --request PUT \
--url http://localhost/vsaas/api/v2/organizations/1/users/2/ \
--header 'content-type: application/json' \
--header 'x-vsaas-session: <vsaas_session>' \
--data '{
"can_view_organization_stats": true,
"can_edit_organization_users": true,
"can_edit_organization_cameras": true
}'

The response will contain some general parameters of the user and their permissions within the Organization similar to the example above.

Deleting the user from the Organization

Use the following request to delete the user from the Organization

DELETE YOUR_WATCHER_URL/vsaas/api/v2/organizations/(organization ID)/users/(user ID)

curl --request DELETE \
--url http://localhost/vsaas/api/v2/organizations/1/users/2/ \
--header 'x-vsaas-session: <vsaas_session>'

If the deletion is successful, Watcher responds with {"success":true}