For the complete documentation index, see llms.txt. This page is also available as Markdown.

User

API calls on work with users in the admin panel.

In the Navixy Admin Panel, a User refers to the accounts of Organizations or Individuals who are customers of the Dealer (or Sub Dealer). For example, an organization 'ABC Inc.' can be a User with the type "legal_entity," and John Doe can be a User with the type "individual."

User accounts may have additional sub-accounts, commonly referred to as 'sub-users,' allowing larger organizations to grant access to multiple employees.

This page describes the User object and the API actions that can be performed with it within the Admin Panel.

User Object Structure

The read operations return this flat form, with every legal field present regardless of legal_type and empty strings where a field does not apply.

The create and update operations take a different and stricter shape that varies by legal_type. It is documented as UserEditForm on those two operations below, and the three variants are cumulative: a sole trader is an individual plus registration details, and a legal entity is a sole trader plus a company name and interbranch code. The legal variants also tighten the postal fields, which may be empty for an individual but not for a sole trader or legal entity.

Discount Object Structure

API actions

API path: panel/user.


required permissions: users: "create".

Create user

post
/panel/user/create

Create an end user.

The profile is passed as a user object whose shape depends on legal_type. Alongside it, password, locale, and time_zone are all mandatory and sit at the top level rather than inside user.

A login already in use fails with error code 206.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
userone ofRequired

A user to create or update. The shape depends on legal_type, which selects one of three variants.

The three are cumulative: a sole trader is an individual plus registration details, and a legal entity is a sole trader plus a company name and interbranch code. The legal variants also tighten the postal fields, which may be empty for an individual but not for a sole trader or legal entity.

On update, id and activated are both mandatory.

or
or
passwordstring · passwordRequired

Initial password. Must satisfy the password policy of the dealer.

localestringRequired

Locale for the new user.

Example: en_US
time_zonestringRequired

Time zone ID for the new user. See the timezone list operation.

Example: Europe/London
default_tariff_idinteger · nullableOptional

Optional. Plan the user is placed on. Must exist and belong to the dealer.

commentstring · max: 255Optional

Optional free-text comment.

Responses
200

User created

application/json
successbooleanRead-onlyOptionalExample: true
idintegerRead-onlyOptional

ID of the created user.

Example: 231485
post/panel/user/create
POST /v2/panel/user/create HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 500

{
  "user": {
    "legal_type": "individual",
    "login": "user@example.com",
    "first_name": "text",
    "middle_name": "text",
    "last_name": "text",
    "phone": "491761234567",
    "birth_date": null,
    "passport": null,
    "menu_preset_id": null,
    "activated": true,
    "post_country": "text",
    "post_region": "text",
    "post_city": "text",
    "post_street_address": "text",
    "post_index": "text"
  },
  "password": "password",
  "locale": "en_US",
  "time_zone": "Europe/London",
  "discount": {
    "percent": 1,
    "end_date": null,
    "device_limit": null
  },
  "default_tariff_id": null,
  "comment": "text"
}
{
  "success": true,
  "id": 231485
}

Errors

  • 206 - Login already in use - if this email is already registered.


required permissions: users: "read".

Read user

post
/panel/user/read

Read a single end user.

The response carries five sibling keys rather than a single value: the user profile, any discount, the default plan ID of the dealer, the block parameters of the user, and the dealer-level MFA settings.

A sub-user, or a user belonging to another dealer, returns error code 201 exactly as a missing one does.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
Responses
200

The user, with related settings

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
default_tariff_idinteger · nullableOptional

ID of the default plan of the dealer.

block_parametersobject · nullableOptional

Parameters governing how and when the user is blocked.

dealer_mfa_settingsobject · nullableOptional

Dealer-level multi-factor authentication settings that apply to this user.

post/panel/user/read
POST /v2/panel/user/read HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "user_id": 231485
}
{
  "success": true,
  "value": {
    "id": 371356,
    "dealer_id": 28152,
    "login": "user@example.com",
    "activated": true,
    "verified": true,
    "phone_verified": true,
    "legal_type": "individual",
    "first_name": "Demo",
    "middle_name": "",
    "last_name": "User",
    "phone": "text",
    "post_country": "text",
    "post_index": "text",
    "post_region": "text",
    "post_city": "text",
    "post_street_address": "text",
    "registered_country": "text",
    "registered_index": "text",
    "registered_region": "text",
    "registered_city": "text",
    "registered_street_address": "text",
    "legal_name": "text",
    "tin": "text",
    "iec": "text",
    "state_reg_num": "text",
    "okpo_code": "text",
    "balance": 0,
    "bonus": 0,
    "trackers_count": 7,
    "menu_preset_id": 346,
    "mfa_allowed": false,
    "creation_date": "2024-11-25 15:27:31",
    "comment": "text"
  },
  "discount": {
    "percent": 1,
    "end_date": null,
    "device_limit": null
  },
  "default_tariff_id": null,
  "block_parameters": null,
  "dealer_mfa_settings": null
}

Errors

  • 201 - Not found in the database - when the user does not exist, is a sub-user, or belongs to another dealer.


required permissions: users: "update".

Update user

post
/panel/user/update

Update an end user.

The user object must carry both id and activated; omitting either fails with an errors entry naming user.id or user.activated. Changing login to one already in use fails with error code 206.

As with create, the shape of user depends on legal_type.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
userone ofRequired

A user to create or update. The shape depends on legal_type, which selects one of three variants.

The three are cumulative: a sole trader is an individual plus registration details, and a legal entity is a sole trader plus a company name and interbranch code. The legal variants also tighten the postal fields, which may be empty for an individual but not for a sole trader or legal entity.

On update, id and activated are both mandatory.

default_tariff_idinteger · nullableOptional

Optional. Plan the user is placed on. Must exist and belong to the dealer.

commentstring · max: 255Optional

Optional free-text comment.

Responses
200

Successful response

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/panel/user/update
POST /v2/panel/user/update HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 433

{
  "user": {
    "legal_type": "individual",
    "login": "user@example.com",
    "first_name": "text",
    "middle_name": "text",
    "last_name": "text",
    "phone": "491761234567",
    "birth_date": null,
    "passport": null,
    "menu_preset_id": null,
    "activated": true,
    "post_country": "text",
    "post_region": "text",
    "post_city": "text",
    "post_street_address": "text",
    "post_index": "text"
  },
  "discount": {
    "percent": 1,
    "end_date": null,
    "device_limit": null
  },
  "default_tariff_id": null,
  "comment": "text"
}
{
  "success": true
}

Errors

  • 201 - Not found in the database - if the specified user does not exist or belongs to a different dealer.

  • 206 - Login already in use - if the specified login is used by another user.


required permissions: users: "update".

Change user password

post
/panel/user/change_password

Set a new password for an end user.

Note the parameter is password, not new_password as the dealer and subpaas equivalents use, and no current password is required: a dealer sets a user password without knowing the old one.

The value must satisfy the password policy of the dealer, returned as password_policy by the dealer get info operation.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
passwordstring · passwordRequired

New password. Must satisfy the password policy of the dealer and must not match a recently used password.

Responses
200

Successful response

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/panel/user/change_password
POST /v2/panel/user/change_password HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "user_id": 231485,
  "password": "password"
}
{
  "success": true
}

required permissions: users: "corrupt".

Corrupt user

post
/panel/user/corrupt

Corrupt an end user, marking the account and its data as unusable.

The login of the user must be supplied alongside user_id, which acts as a deliberate confirmation step for a destructive operation.

By default the tracker clones of the user are corrupted too.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
loginstring · min: 1Required

Login of the user being corrupted.

Example: user@example.com
corrupt_clonesbooleanOptional

Whether to corrupt the tracker clones of the user as well.

Default: true
Responses
200

Successful response

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/panel/user/corrupt
POST /v2/panel/user/corrupt HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 67

{
  "user_id": 231485,
  "login": "user@example.com",
  "corrupt_clones": true
}
{
  "success": true
}

Errors

  • 201 - Not found in the database - if the specified user does not exist or belongs to a different dealer.


required permissions: users: "create".

Upload users

post
/panel/user/upload

Create users in bulk from a CSV or XLS spreadsheet.

Requires a multipart/form-data request with the spreadsheet as a part named file, in the same way as the branding image upload. At most 10000 rows are processed.

Column headers are localized, so a Russian-locale file uses Russian headers. Columns may appear in any order. Legal status is a number: 1 individual, 2 legal entity, 3 sole trader. Legal entities and sole traders require the address and registration columns as well as the always-required ones, except that a sole trader does not require Legal name.

New users take the time zone from the default_user_time_zone service setting.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
filestring · binaryRequired

CSV or XLS spreadsheet. CSV uses ; as the column separator.

redirect_targetstring · uriOptional

Optional URL to redirect to instead of returning the JSON response body, as for the branding image upload.

Responses
200

Upload processed

application/json
successbooleanRead-onlyOptionalExample: true
totalintegerRead-onlyOptional

Number of rows processed.

Example: 1
errorsintegerRead-onlyOptional

Number of rows that failed.

Example: 0
post/panel/user/upload
POST /v2/panel/user/upload HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: multipart/form-data
Accept: */*
Content-Length: 57

{
  "file": "binary",
  "redirect_target": "https://example.com"
}
{
  "success": true,
  "total": 1,
  "errors": 0
}

Spreadsheet columns

CSV uses ; as the column separator. Column headers are localized, and headers marked * are always required.

For an English-locale file:

Email address*;Password*;Status*;Legal status*;Surname*;Name*;Middle name;Phone number;Comment;Country;Region;City;Street, address;Zip code;Legal name;Tax number;IEC;Registration country;Registration region;Registration city;Registration address;Registration zip code;Discount;End date of discount;Device limit

For a Russian-locale file:

Адрес электронной почты*;Пароль*;Статус*;Юридический статус*;Фамилия*;Имя*;Отчество;Номер телефона;Комментарий;Страна;Регион;Город;Улица, дом, квартира;Почтовый индекс;Юридическое название;ИНН;КПП;ОГРН;ОКПО;Страна регистрации;Регион регистрации;Город регистрации;Улица, дом регистрации;Почтовый индекс регистрации;Скидка;Дата окончания скидки;Минимальное число устройств для скидки

Legal status must be one of the following numbers:

  • 1 - individual

  • 2 - legal entity

  • 3 - sole trader

For legal entity (2) and sole trader (3), the following columns must also be present and filled with data, in addition to those marked *:

Country;Region;City;Street, address;Zip code;Legal name;Registration region;Registration city;Registration address;Registration zip code

Legal name is the exception: it is not required for a sole trader (3).

The remaining columns are optional and can be omitted. Columns can appear in any order.

New users are created with the time zone specified in the default_user_time_zone service setting.


required permissions: users: "read".

List users

post
/panel/user/list

List the end users of the dealer, with optional text filtering, ordering and pagination.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
filterstringOptional

Optional. Text filter.

order_bystringOptional

Optional. Field to order by.

ascendingbooleanOptional

Optional. Ascending when true.

Default: true
offsetintegerOptional

Optional. Starting offset, for pagination.

Default: 0
limitintegerOptional

Optional. Maximum records to return.

Responses
200

Users

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
countintegerRead-onlyOptional

Total matching records, ignoring offset and limit.

post/panel/user/list
POST /v2/panel/user/list HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 73

{
  "filter": "text",
  "order_by": "text",
  "ascending": true,
  "offset": 0,
  "limit": 1
}
{
  "success": true,
  "list": [
    {
      "id": 371356,
      "dealer_id": 28152,
      "login": "user@example.com",
      "activated": true,
      "verified": true,
      "phone_verified": true,
      "legal_type": "individual",
      "first_name": "Demo",
      "middle_name": "",
      "last_name": "User",
      "phone": "text",
      "post_country": "text",
      "post_index": "text",
      "post_region": "text",
      "post_city": "text",
      "post_street_address": "text",
      "registered_country": "text",
      "registered_index": "text",
      "registered_region": "text",
      "registered_city": "text",
      "registered_street_address": "text",
      "legal_name": "text",
      "tin": "text",
      "iec": "text",
      "state_reg_num": "text",
      "okpo_code": "text",
      "balance": 0,
      "bonus": 0,
      "trackers_count": 7,
      "menu_preset_id": 346,
      "mfa_allowed": false,
      "creation_date": "2024-11-25 15:27:31",
      "comment": "text"
    }
  ],
  "count": 1
}

required permissions: users: "read".

Export users

post
/panel/user/export

Export the user list as a spreadsheet. Unlike every other operation here, a successful response is a file download rather than a JSON body.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
formatstring · enumOptional

Output file format.

Default: xlsxPossible values:
columnsstring[] · min: 1Optional

Columns to include, in order. Must not be empty.

Default: ["id","login","first_name","middle_name","last_name","phone"]
filterstringOptional

Optional. Text filter, as for the list operation.

Responses
200

The exported file.

stringOptional
post/panel/user/export
POST /v2/panel/user/export HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 52

{
  "format": "xlsx",
  "columns": [
    "text"
  ],
  "filter": "text"
}
text

required permissions: users: "read" and user_sessions: "create".

Create user session

post
/panel/user/session/create

Create a session for an end user and return its hash, letting a dealer act on behalf of that user in the user-facing API without knowing their password.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
Responses
200

The session of the user

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
hashstringRead-onlyOptional

Session key for the end user. Use it against the user-facing API, not the Admin Panel API.

Example: fa7bf873fab9333144e171372a321b06
post/panel/user/session/create
POST /v2/panel/user/session/create HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "user_id": 231485
}
{
  "success": true,
  "hash": "fa7bf873fab9333144e171372a321b06"
}

Errors

  • 201 - Not found in the database - if the specified user does not exist or belongs to a different dealer.


required permissions: users: "read" and transactions: "read".

List user transactions

post
/panel/user/transaction/list

List balance transactions for an end user over a time interval.

from and to are top-level parameters, not nested under an interval object. Both are mandatory.

The interval is bounded: too wide a span fails with error code 211 rather than truncating.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
fromstringRequired

Start of the interval, as YYYY-MM-DD HH:MM:SS.

Example: 2026-07-01 00:00:00
tostringRequired

End of the interval, as YYYY-MM-DD HH:MM:SS.

Example: 2026-08-01 00:00:00
limitinteger · min: 1 · max: 20000Optional

Optional. Maximum records to return.

Responses
200

The transactions of the user

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/panel/user/transaction/list
POST /v2/panel/user/transaction/list HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 84

{
  "user_id": 231485,
  "from": "2026-07-01 00:00:00",
  "to": "2026-08-01 00:00:00",
  "limit": 1
}
{
  "success": true,
  "list": [
    {
      "id": 1,
      "user_id": 1,
      "amount": 1,
      "type": "text",
      "text": "text",
      "timestamp": "text"
    }
  ]
}

Errors

  • 211 - Requested time span is too big - if the interval between from and to exceeds the permitted maximum.


required permissions: users: "update" and transactions: "create".

Change user balance

post
/panel/user/transaction/change_balance

Adjust the balance or bonus balance of an end user by a signed amount, recording a transaction.

A descriptive text of at least 5 characters is mandatory, so every adjustment carries a reason.

Authorizations
AuthorizationstringRequired

Enter the panel session hash with the "NVX " prefix, e.g. "NVX fa7bf873fab9333144e171372a321b06". Obtain the hash from the accountAuth operation.

Body
user_idinteger · min: 1Required

ID of the user. Must belong to the current dealer and must not be a sub-user.

Example: 231485
amountnumber · min: -9999999999.9999 · max: 9999999999.9999Required

Signed amount to apply. Negative values debit the balance.

Example: 10.5
typestringRequired

Which balance to adjust.

Example: main
textstring · min: 5 · max: 200Required

Reason for the adjustment, recorded on the transaction.

Example: Manual top-up after support request
Responses
200

Successful response

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/panel/user/transaction/change_balance
POST /v2/panel/user/transaction/change_balance HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 91

{
  "user_id": 231485,
  "amount": 10.5,
  "type": "main",
  "text": "Manual top-up after support request"
}
{
  "success": true
}

Last updated

Was this helpful?