> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/navixy-api/panel-api/resources/subpaas.md).

# Subpaas

## Subdealer (Sub PaaS) actions

In Navixy, a Subdealer (Sub PaaS) account is designed for dealers who need to manage multiple accounts that provide services independently. This feature is ideal for dealers who act as larger distributors or service providers. With Sub PaaS accounts, dealers can create and manage additional sub-accounts, each with its own users, devices, and settings.

These sub-accounts function similarly to the main dealer account but allow for more granular control and management. This setup is perfect for servicing other dealers (subdealers) or larger enterprises that require separate PaaS accounts, such as a service run on their own domain. It simplifies operations of multiple independent organizations, while maintaining oversight from the main dealer account.

## Subdealer (Sub PaaS) object

The read operation returns the full object. The list operation returns a smaller field set plus per-sub-dealer user and device counts.

## The Subpaas object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"Subpaas":{"type":"object","description":"A sub-dealer, also called a Sub-PaaS account: a dealer operating underneath another dealer.","readOnly":true,"properties":{"subpaas_id":{"type":"integer","description":"Sub-dealer ID."},"block_type":{"type":"string","description":"Block status of the sub-dealer panel and its users.","enum":["NOT_BLOCKED","INITIAL_BLOCK","BLOCK_LOGIN","CLIENTS_BLOCKED"]},"creation_date":{"type":"string","format":"date","description":"When the sub-dealer was created."},"login":{"type":"string","description":"Sub-dealer's panel login."},"title":{"type":"string","description":"Sub-dealer display name."},"jur_name":{"type":"string","description":"Legal company name."},"email":{"type":"string","format":"email","description":"Company email address."},"jur_country":{"type":"string","description":"Sub-dealer's country."},"link_monitoring":{"type":"string","description":"Sub-dealer's monitoring domain."},"contact_fio":{"type":"string","description":"Contact person."},"contact_post":{"type":"string","description":"Contact person position."},"contact_phone":{"type":"string","description":"Contact person's phone."},"users_count":{"type":"integer","description":"Number of the sub-dealer's users.","readOnly":true},"active_users_count":{"type":"integer","description":"Number of the sub-dealer's active users.","readOnly":true},"trackers_count":{"type":"integer","description":"Total number of the sub-dealer's devices.","readOnly":true},"active_trackers_count":{"type":"integer","description":"Number of the sub-dealer's active devices.","readOnly":true}}}}}}
```

## The SubpaasListEntry object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"components":{"schemas":{"SubpaasListEntry":{"type":"object","description":"A sub-dealer as returned by the list operation, with its user and device counts. Carries fewer fields than the read operation.","readOnly":true,"properties":{"subpaas_id":{"type":"integer","description":"Sub-dealer ID."},"title":{"type":"string","description":"Sub-dealer display name."},"jur_name":{"type":"string","description":"Legal company name."},"login":{"type":"string","description":"Sub-dealer's panel login."},"creation_date":{"type":"string","format":"date","description":"When the sub-dealer was created."},"block_type":{"type":"string","description":"Block status of the sub-dealer panel and its users.","enum":["NOT_BLOCKED","INITIAL_BLOCK","BLOCK_LOGIN","CLIENTS_BLOCKED"]},"users_count":{"type":"integer","description":"Number of the sub-dealer's users.","readOnly":true},"active_users_count":{"type":"integer","description":"Number of the sub-dealer's active users.","readOnly":true},"trackers_count":{"type":"integer","description":"Total number of the sub-dealer's devices.","readOnly":true},"active_trackers_count":{"type":"integer","description":"Number of the sub-dealer's active devices.","readOnly":true}}}}}}
```

## API actions

API base path: `panel/subpaas`.

Every operation here requires the `subpaas` permission, and is available only to dealers whose contract type and plan permit sub-dealer accounts.

***

*required permissions*: `subpaas: "create"`.

A newly created sub-dealer starts in `INITIAL_BLOCK` status.

{% hint style="warning" %}
Creating a sub-dealer sends email. The platform notifies both the parent dealer and the platform managers.
{% endhint %}

{% hint style="danger" %}
Passwords must be between 12 and 20 characters in length and include at least one uppercase letter, lowercase letter, digit, and special character (!@#$%^&\*). To maintain account security, the system tracks password history, so you can't reuse any of your last 10 passwords. If a previous password is detected, the system will return the error "Password was recently used."
{% endhint %}

## Create sub-dealer

> Create a sub-dealer under the current dealer.\
> \
> \*\*This operation sends email.\*\* On success the platform notifies both the parent dealer and the platform managers.\
> \
> The current dealer must be of the PaaS contract type, must not be blocked, and its plan must permit sub-dealer accounts. Failing any of those returns error code 13.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"Subpaas","description":"Sub-dealers, also called Sub-PaaS accounts: dealers operating underneath another dealer. Covers listing, reading, creating and updating them, changing their password, and opening a session as one. All resources under the /panel/subpaas/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/subpaas/create":{"post":{"tags":["Subpaas"],"summary":"Create sub-dealer","operationId":"subpaasCreate","description":"Create a sub-dealer under the current dealer.\n\n**This operation sends email.** On success the platform notifies both the parent dealer and the platform managers.\n\nThe current dealer must be of the PaaS contract type, must not be blocked, and its plan must permit sub-dealer accounts. Failing any of those returns error code 13.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["password","title","jur_name","email","jur_country","link_monitoring"],"properties":{"password":{"type":"string","format":"password","description":"Sub-dealer's password. Must satisfy the platform password policy."},"title":{"type":"string","description":"Sub-dealer display name.","minLength":1,"maxLength":50},"jur_name":{"type":"string","description":"Legal company name.","maxLength":100},"email":{"type":"string","description":"Company email address.","format":"email"},"jur_country":{"type":"string","description":"Sub-dealer's country.","maxLength":255},"link_monitoring":{"type":"string","description":"Sub-dealer's monitoring domain. Must be a valid internationalized domain name and must not be empty.","maxLength":255},"contact_fio":{"type":"string","description":"Optional. Contact person.","maxLength":100},"contact_post":{"type":"string","description":"Optional. Contact person position.","maxLength":50},"contact_phone":{"type":"string","description":"Optional. Contact person's phone.","maxLength":255}}}}}},"responses":{"200":{"description":"Sub-dealer created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"id":{"type":"integer","description":"ID of the created sub-dealer.","readOnly":true}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission, or the dealer is not eligible to have sub-dealers.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 13 – If the dealer:
  * is not of the PaaS type.
  * has a status other than `NOT_BLOCKED`.
  * has a plan that does not allow SubPaaS accounts.

***

*required permissions*: `subpaas: "read"`.

The parent dealer is taken from the session, so only your own sub-dealers are returned.

## List sub-dealers

> List the sub-dealers belonging to the current dealer, with per-sub-dealer user and device counts, plus optional text filtering, ordering and pagination.\
> \
> Every parameter is optional.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"Subpaas","description":"Sub-dealers, also called Sub-PaaS accounts: dealers operating underneath another dealer. Covers listing, reading, creating and updating them, changing their password, and opening a session as one. All resources under the /panel/subpaas/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"SubpaasListEntry":{"type":"object","description":"A sub-dealer as returned by the list operation, with its user and device counts. Carries fewer fields than the read operation.","readOnly":true,"properties":{"subpaas_id":{"type":"integer","description":"Sub-dealer ID."},"title":{"type":"string","description":"Sub-dealer display name."},"jur_name":{"type":"string","description":"Legal company name."},"login":{"type":"string","description":"Sub-dealer's panel login."},"creation_date":{"type":"string","format":"date","description":"When the sub-dealer was created."},"block_type":{"type":"string","description":"Block status of the sub-dealer panel and its users.","enum":["NOT_BLOCKED","INITIAL_BLOCK","BLOCK_LOGIN","CLIENTS_BLOCKED"]},"users_count":{"type":"integer","description":"Number of the sub-dealer's users.","readOnly":true},"active_users_count":{"type":"integer","description":"Number of the sub-dealer's active users.","readOnly":true},"trackers_count":{"type":"integer","description":"Total number of the sub-dealer's devices.","readOnly":true},"active_trackers_count":{"type":"integer","description":"Number of the sub-dealer's active devices.","readOnly":true}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/subpaas/list":{"post":{"tags":["Subpaas"],"summary":"List sub-dealers","operationId":"subpaasList","description":"List the sub-dealers belonging to the current dealer, with per-sub-dealer user and device counts, plus optional text filtering, ordering and pagination.\n\nEvery parameter is optional.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filter":{"type":"string","description":"Text filter."},"order_by":{"type":"string","description":"Field to order by.","enum":["subpaas_id","title","jur_name","login","block_type","creation_date"],"default":"subpaas_id"},"ascending":{"type":"boolean","description":"Order direction. Ascending when `true`.","default":true},"offset":{"type":"integer","description":"Starting offset, for pagination.","minimum":0,"default":0},"limit":{"type":"integer","description":"Maximum number of records to return.","minimum":0}}}}}},"responses":{"200":{"description":"Sub-dealers","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"list":{"type":"array","readOnly":true,"description":"The matching sub-dealers.","items":{"$ref":"#/components/schemas/SubpaasListEntry"}},"count":{"type":"integer","readOnly":true,"description":"Total number of matching records, ignoring `offset` and `limit`."}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission, or the dealer is not eligible to have sub-dealers.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

***

*required permissions*: `subpaas: "read"`.

## Read sub-dealer

> Read a single sub-dealer belonging to the current dealer.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"Subpaas","description":"Sub-dealers, also called Sub-PaaS accounts: dealers operating underneath another dealer. Covers listing, reading, creating and updating them, changing their password, and opening a session as one. All resources under the /panel/subpaas/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"schemas":{"Subpaas":{"type":"object","description":"A sub-dealer, also called a Sub-PaaS account: a dealer operating underneath another dealer.","readOnly":true,"properties":{"subpaas_id":{"type":"integer","description":"Sub-dealer ID."},"block_type":{"type":"string","description":"Block status of the sub-dealer panel and its users.","enum":["NOT_BLOCKED","INITIAL_BLOCK","BLOCK_LOGIN","CLIENTS_BLOCKED"]},"creation_date":{"type":"string","format":"date","description":"When the sub-dealer was created."},"login":{"type":"string","description":"Sub-dealer's panel login."},"title":{"type":"string","description":"Sub-dealer display name."},"jur_name":{"type":"string","description":"Legal company name."},"email":{"type":"string","format":"email","description":"Company email address."},"jur_country":{"type":"string","description":"Sub-dealer's country."},"link_monitoring":{"type":"string","description":"Sub-dealer's monitoring domain."},"contact_fio":{"type":"string","description":"Contact person."},"contact_post":{"type":"string","description":"Contact person position."},"contact_phone":{"type":"string","description":"Contact person's phone."},"users_count":{"type":"integer","description":"Number of the sub-dealer's users.","readOnly":true},"active_users_count":{"type":"integer","description":"Number of the sub-dealer's active users.","readOnly":true},"trackers_count":{"type":"integer","description":"Total number of the sub-dealer's devices.","readOnly":true},"active_trackers_count":{"type":"integer","description":"Number of the sub-dealer's active devices.","readOnly":true}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/subpaas/read":{"post":{"tags":["Subpaas"],"summary":"Read sub-dealer","operationId":"subpaasRead","description":"Read a single sub-dealer belonging to the current dealer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["subpaas_id"],"properties":{"subpaas_id":{"type":"integer","description":"Sub-dealer ID."}}}}}},"responses":{"200":{"description":"The sub-dealer","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"value":{"$ref":"#/components/schemas/Subpaas"}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission, or the dealer is not eligible to have sub-dealers.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

***

*required permissions*: `subpaas: "update"`.

Unlike create, this operation requires `subpaas_id` and `block_type`. It does **not** accept a password: use [change password](/docs/navixy-api/panel-api/resources/subpaas/password.md) instead.

Both `link_monitoring` and `email` must be unique across dealers. A clash returns error code 7 naming the offending parameter, rather than a 409.

## Update sub-dealer

> Update an existing sub-dealer.\
> \
> Unlike create, this operation requires \`subpaas\_id\` and \`block\_type\`, and does not accept \`password\`. Use the password change operation for that.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Admin Panel API","version":"1.2.0"},"tags":[{"name":"Subpaas","description":"Sub-dealers, also called Sub-PaaS accounts: dealers operating underneath another dealer. Covers listing, reading, creating and updating them, changing their password, and opening a session as one. All resources under the /panel/subpaas/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Enter the panel session hash with the \"NVX \" prefix, e.g. \"NVX fa7bf873fab9333144e171372a321b06\". Obtain the hash from the accountAuth operation.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API (not a HTTP code)"},"description":{"type":"string","description":"An error description"}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/panel/subpaas/update":{"post":{"tags":["Subpaas"],"summary":"Update sub-dealer","operationId":"subpaasUpdate","description":"Update an existing sub-dealer.\n\nUnlike create, this operation requires `subpaas_id` and `block_type`, and does not accept `password`. Use the password change operation for that.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["subpaas_id","block_type","title","jur_name","email","jur_country","link_monitoring"],"properties":{"subpaas_id":{"type":"integer","description":"ID of the sub-dealer to update."},"block_type":{"type":"string","description":"Block status of the sub-dealer panel and its users.","enum":["NOT_BLOCKED","INITIAL_BLOCK","BLOCK_LOGIN","CLIENTS_BLOCKED"]},"title":{"type":"string","description":"Sub-dealer display name.","minLength":1,"maxLength":50},"jur_name":{"type":"string","description":"Legal company name.","maxLength":100},"email":{"type":"string","description":"Company email address.","format":"email"},"jur_country":{"type":"string","description":"Sub-dealer's country.","maxLength":255},"link_monitoring":{"type":"string","description":"Sub-dealer's monitoring domain. Must be a valid internationalized domain name and must not be empty.","maxLength":255},"contact_fio":{"type":"string","description":"Optional. Contact person.","maxLength":100},"contact_post":{"type":"string","description":"Optional. Contact person position.","maxLength":50},"contact_phone":{"type":"string","description":"Optional. Contact person's phone.","maxLength":255}}}}}},"responses":{"200":{"$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Operation not permitted, error code 13: the session lacks the required permission, or the dealer is not eligible to have sub-dealers.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

* 13 –
  * The dealer is not PaaS.
  * The dealer has a status other than `NOT_BLOCKED`.
  * SubPaaS accounts are not permitted for the dealer.
  * `block_type` is `DELETED`.
  * The found SubPaaS is in `DELETED` status.
  * The found SubPaaS is not in `INITIAL_BLOCK` status and `block_type` is `INITIAL_BLOCK`.
  * The found SubPaaS is in `INITIAL_BLOCK` status and `block_type` is not `INITIAL_BLOCK`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/navixy-api/panel-api/resources/subpaas.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
