Files
portal-api/docs/open-api-plesk.md
baodev0 79f06c2fa2 Add bulk update gateway endpoint to vCenter API routes
- Introduced a new POST route 'bulk-update-gateway' for bulk updating gateways.
- This route is protected by the 'module-vcenter.manager' permission middleware.
2026-08-06 15:32:51 +07:00

134 KiB
Raw Permalink Blame History

openapi: 3.0.3 info: version: v2 title: Plesk RESTful API description: >- New remote API for Plesk is based on REST concepts and provides the output in JSON format. servers:

  • url: /api/v2 description: Plesk Server REST API security:

  • BasicAuth: []

  • APIKeyHeader: []

  • BasicAuth: [] ImpersonateLoginHeader: []

  • APIKeyHeader: [] ImpersonateLoginHeader: [] tags:

  • name: Authentication description: Auth entry points

  • name: Cli description: CLI gate entry points

  • name: Server description: Server entry points

  • name: Extensions description: Extensions entry points

  • name: Clients description: Clients entry points

  • name: Domains description: Domains entry points

  • name: FtpUsers description: FTP Users entry points

  • name: Databases description: Databases, database servers and database users entry points

  • name: DNS description: DNS entry points

  • name: Files description: Domain file management entry points paths: /auth/keys: post: tags: - Authentication x-roles: - admin summary: Generate API secret key description: >- Create a new API secret key for authentication with specified login credentials and IP restrictions. responses: '201': description: Secret key was successfully created content: application/json: schema: $ref: '#/components/schemas/SecretKeyResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Incorrect login content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SecretKeyRequest' /auth/keys/{key}: delete: tags: - Authentication x-roles: - admin summary: Delete API secret key description: >- Revoke and delete an API secret key, removing all associated access permissions. parameters: - in: path name: key description: Key ID required: true example: 3d2e93ad-85e6-1a3e-9f81-b9d26650e4f9 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Key does not exist content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /server/session: post: tags: - Authentication - Server x-roles: - admin - reseller - customer summary: Create a session token description: > Create a new session for the specified user login. Returns a session identifier

    that can be used to access Plesk panel via the URL:
    
        https://<host>:<port>/enterprise/rsession_init.php?PLESKSESSID=<id>
    

    responses: '201': description: Session was successfully created content: application/json: schema: $ref: '#/components/schemas/SessionResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SessionRequest' /cli/commands: get: tags: - Cli x-roles: - admin summary: List CLI commands description: >- Retrieve a list of all available Plesk CLI commands that can be executed via the REST API. responses: '200': description: OK content: application/json: schema: type: array items: type: string '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true /cli/{id}/ref: get: tags: - Cli x-roles: - admin x-plesk-since: '17.9' summary: Get CLI command reference description: >- Retrieve detailed reference information for a specific Plesk CLI command, including allowed subcommands and options. parameters: - in: path name: id description: Command name required: true example: settings schema: type: string responses: '200': description: OK content: application/json: schema: type: object properties: allowed_commands: type: object allowed_options: type: object '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Command is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /cli/{id}/call: post: tags: - Cli x-roles: - admin summary: Execute CLI command description: >- Execute a Plesk CLI command (a Plesk utility, e.g. one run via plesk bin <utility> or /usr/local/psa/bin/<utility>) with the provided parameters and environment. Set fail_on_error to true so that a failed command is reported as an error (HTTP 422) instead of a 200 response with a non-zero exit code. parameters: - in: path name: id description: Command name required: true example: settings schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CliCallResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Command is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Respond with 422 status when the command returns a non-zero exit code. content: application/json: schema: $ref: '#/components/schemas/CliCallResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CliCallRequest' /server: get: tags: - Server x-roles: - admin summary: Get server information description: >- Retrieve server metadata including Plesk version, platform, and system information. responses: '200': description: Return Server Meta Information content: application/json: schema: $ref: '#/components/schemas/ServerMeta' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true /server/init: post: tags: - Server x-roles: - admin summary: Initialize server description: >- Perform initial server configuration, including admin credentials and basic settings. responses: '200': description: Inital server setup was succesfully performed content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServerInit' /server/license: post: tags: - Server x-roles: - admin summary: Install license key description: Install or update the Plesk or additional license key for the server. responses: '200': description: License key was succesfully installed content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServerLicense' /server/ips: get: tags: - Server x-roles: - admin summary: List server IP addresses description: Retrieve a list of all IP addresses configured on the server. responses: '200': description: Return Server IP Addresses list content: application/json: schema: type: array items: $ref: '#/components/schemas/ServerIp' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true /extensions: get: tags: - Extensions x-roles: - admin summary: List installed extensions description: >- Retrieve a list of all Plesk extensions currently installed on the server. responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Extension' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true post: tags: - Extensions x-roles: - admin summary: Install extension description: >- Install a Plesk extension from the Extension Catalog by ID, a file, or URL. responses: '200': description: Extension successfully installed content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExtensionInstallRequest' /extensions/{id}: get: tags: - Extensions x-roles: - admin summary: Get extension details description: Retrieve detailed information about a specific installed extension. parameters: - in: path name: id description: Extension identifier required: true example: letsencrypt schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Extension' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Extension is not installed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true delete: tags: - Extensions x-roles: - admin summary: Uninstall extension description: Remove an extension from the server and delete all associated data. parameters: - in: path name: id description: Extension identifier required: true example: letsencrypt schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Extension is not installed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /extensions/{id}/enable: put: tags: - Extensions x-roles: - admin summary: Enable extension description: Enable a previously disabled extension, making it active on the server. parameters: - in: path name: id description: Extension identifier required: true example: letsencrypt schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Extension is not installed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /extensions/{id}/disable: put: tags: - Extensions x-roles: - admin summary: Disable extension description: >- Disable an extension temporarily without uninstalling it from the server. parameters: - in: path name: id description: Extension identifier required: true example: letsencrypt schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Extension is not installed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /clients: get: tags: - Clients x-roles: - admin - reseller - customer summary: List clients description: >- Retrieve a list of all client accounts on the server that are available to the user. responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Client' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true post: tags: - Clients x-roles: - admin - reseller summary: Create client account description: Create a new client account with the specified settings and permissions. responses: '201': description: Client account successfully created content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientRequest' /clients/{id}: get: tags: - Clients x-roles: - admin - reseller - customer summary: Get client details description: Retrieve detailed information about a specific client account. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Client' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true put: tags: - Clients x-roles: - admin - reseller - customer summary: Update client account description: Update settings and properties of an existing client account. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientUpdateRequest' delete: tags: - Clients x-roles: - admin - reseller summary: Delete client account description: Delete a client account and all associated data from the server. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /clients/{id}/domains: get: tags: - Clients x-roles: - admin - reseller - customer summary: List client domains description: Retrieve all domains associated with a specific client account. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/DomainResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /clients/{id}/statistics: get: tags: - Clients x-roles: - admin - reseller - customer summary: Get client statistics description: Retrieve resource usage statistics for a specific client account. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ClientStatistics' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /clients/{id}/activate: put: tags: - Clients x-roles: - admin - reseller summary: Activate client description: Activate a suspended client account, restoring access to all services. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /clients/{id}/suspend: put: tags: - Clients x-roles: - admin - reseller summary: Suspend client description: Suspend a client account, temporarily blocking access to all services. parameters: - in: path name: id required: true description: Client ID example: 7 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Client is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /domains: get: tags: - Domains x-roles: - admin - reseller - customer summary: List domains description: >- Retrieve a list of domains available to the user, with optional filtering by domain name. parameters: - in: query name: name description: Filter data by domain name example: example.com schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/DomainResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: true post: tags: - Domains x-roles: - admin - reseller - customer summary: Create domain description: >- Create a new domain with the specified configuration and hosting settings. To create an addon domain, provide base_domain. To create a subdomain, provide parent_domain. To assign the domain to a specific client, provide owner_client; if omitted, the domain will be assigned to the currently logged-in user. responses: '201': description: Domain successfully created content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainRequest' /domains/{id}: get: tags: - Domains x-roles: - admin - reseller - customer summary: Get domain details description: Retrieve detailed information about a specific domain. parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true put: tags: - Domains x-roles: - admin - reseller - customer summary: Update domain description: Update settings and configuration for an existing domain. parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainUpdateRequest' delete: tags: - Domains x-roles: - admin - reseller - customer summary: Delete domain description: Delete a domain and all associated data from the server. parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /domains/{id}/client: get: tags: - Domains x-roles: - admin - reseller - customer summary: Get domain owner description: Retrieve information about the client account that owns the domain. parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Client' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /domains/{id}/status: get: tags: - Domains x-roles: - admin - reseller - customer summary: Get domain status description: >- Retrieve the current operational status of a domain (active, suspended, disabled). parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainStatus' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true put: tags: - Domains x-roles: - admin - reseller - customer summary: Update domain status description: Change the operational status of a domain (enable, suspend, or disable). parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainStatus' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainStatus' /domains/{id}/exec: post: tags: - Domains x-roles: - admin - reseller - customer summary: Execute a shell command on a domain description: >- Execute a command in the context of a domain, running as the subscription's system user with the domain's document root as the default working directory, and retrieve its stdout, stderr and exit code. Works even if the system user has no or limited shell access, and allows operations on the domain content without root privileges. Set fail_on_error to true so that a failed command is reported as an error (HTTP 422) instead of a 200 response with a non-zero exit code. For pipes, redirections or other shell features, wrap the command, e.g. bash -lc ''. parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainExecResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- The command exited with a non-zero code (returned only when fail_on_error is enabled). The command output is still included in the body. content: application/json: schema: $ref: '#/components/schemas/DomainExecResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainExecRequest' /domains/{id}/dns/resolution: get: tags: - Domains x-roles: - admin - reseller - customer summary: Run a DNS resolution check for a domain description: > Runs a DNS troubleshooting report for the domain, returning a list of checks

    (DNS management, web, mail, email authentication, propagation) with
    severity,
    
    findings, and recommended actions, plus an aggregate summary.
    

    parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainDnsResolutionResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Failed to execute the backend DNS check utility content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '501': description: DNS resolution check is available in Plesk version >= 18.0.80 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /domains/{id}/logs: get: tags: - Domains x-roles: - admin - reseller - customer summary: Search domain logs description: > Search domain logs (Apache error logs, Nginx error logs, PHP-FPM error logs, HTTP access logs, FTP xferlog, ModSecurity audit logs) for a pattern and return matching entries with log statistics grouped by log type.

    Only available on Linux-based Plesk servers.
    

    parameters: - in: path name: id required: true description: Domain ID example: 1 schema: type: integer - in: query name: pattern required: false description: > Search pattern (regex) to filter log entries.

        **Security restrictions**: Patterns with nested or adjacent
        quantifiers are rejected to prevent ReDoS attacks.
    
        Examples of invalid patterns: `(a+)+`, `a*+`, `(error)+*`
    
    
        Keep patterns simple and specific. Use character classes instead of
        alternation where possible.
      example: error|warning
      schema:
        type: string
    - in: query
      name: start_time
      required: false
      description: >-
        Start time for log search in RFC3339 format (e.g.,
        2026-05-21T14:30:00Z)
      example: '2026-05-21T00:00:00Z'
      schema:
        type: string
        format: date-time
    - in: query
      name: end_time
      required: false
      description: >-
        End time for log search in RFC3339 format (e.g.,
        2026-05-21T14:30:00Z). Must be >= start_time
      example: '2026-05-22T00:00:00Z'
      schema:
        type: string
        format: date-time
    - in: query
      name: sample_size
      required: false
      default: 5
      minimum: 1
      maximum: 500
      description: Maximum number of sample log entries to return
      example: 10
      schema:
        type: integer
    

    responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DomainLogsResponse' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '501': description: Not implemented (Windows servers) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /domains/{id}/fs: get: tags: - Files x-roles: - admin - reseller - customer summary: Get file or directory metadata description: >- Return stat metadata for a single file or directory. The default path is the domain's document root. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: false description: > Target path. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
    
        Defaults to the document root.
      example: ./
      schema:
        type: string
    

    responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true delete: tags: - Files x-roles: - admin - reseller - customer summary: Delete a file or directory description: >- Delete a file or directory at the given path. Directories are deleted recursively. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: > Path to delete. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
      example: index.html
      schema:
        type: string
    

    responses: '204': description: Deleted successfully. '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /domains/{id}/fs/list: get: tags: - Files x-roles: - admin - reseller - customer summary: List directory contents description: >- List files and directories at the specified path. By default the listing is rooted at the domain's document root. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: false description: > Directory to list. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
    
        Defaults to the document root.
      example: ./
      schema:
        type: string
    

    responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found or path is not a directory. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /domains/{id}/fs/content: get: tags: - Files x-roles: - admin - reseller - customer summary: Download file contents description: > Download the contents of a regular file. Without encoding, the response is a raw octet-stream

    attachment. When `encoding` is specified, the response is a JSON body
    with the file contents
    
    encoded accordingly. Files larger than 100 MB cannot be downloaded via
    the JSON mode.
    

    parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: > Target file path. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
      example: index.html
      schema:
        type: string
    - in: query
      name: encoding
      required: false
      description: >-
        When specified, returns a `FileContentResponse` JSON body instead of
        an octet-stream.
      schema:
        type: string
        enum:
          - plain
          - base64
    

    responses: '200': description: >- OK — raw octet-stream (no encoding) or FileContentResponse JSON (with encoding). content: application/json: schema: $ref: '#/components/schemas/FileContentResponse' application/octet-stream: schema: type: string format: binary '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true put: tags: - Files x-roles: - admin - reseller - customer summary: Upload file contents description: > Upload the request body as a file at the given path. Creates the file if it does not exist; overwrites it if it does.

    When sending `Content-Type: application/octet-stream`, the raw request
    body is written verbatim.
    
    When sending `Content-Type: application/json`, the body must be a
    `FileContentRequest` object.
    

    parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: > Destination file path. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
      example: index.html
      schema:
        type: string
    

    responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FileContentRequest' application/octet-stream: schema: type: string format: binary patch: tags: - Files x-roles: - admin - reseller - customer summary: Append a chunk to a file description: > Append the request body to the end of a file at the given path. Creates the file if it does not exist.

    When sending `Content-Type: application/octet-stream`, the raw request
    body is appended verbatim.
    
    When sending `Content-Type: application/json`, the body must be a
    `FileContentRequest` object.
    

    parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: > Destination file path. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
      example: upload.bin
      schema:
        type: string
    

    responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FileContentRequest' application/octet-stream: schema: type: string format: binary /domains/{id}/fs/mkdir: post: tags: - Files x-roles: - admin - reseller - customer summary: Create a directory description: Create a new directory within the domain's webspace. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: > Path of the directory to create. An absolute path (starting with "/" on Unix, or a drive letter such as "C:\" on Windows) is used as-is;

        otherwise the path is resolved relative to the domain's document
        root.
      example: uploads
      schema:
        type: string
    

    responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Path already exists. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /domains/{id}/fs/copy: post: tags: - Files x-roles: - admin - reseller - customer summary: Copy a file or directory description: >- Copy a file or directory from source to destination within the domain's webspace. Returns stat metadata of the resulting entry at the destination path. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or a path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or source path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Destination already exists and overwrite is false. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FileCopyMoveRequest' /domains/{id}/fs/move: post: tags: - Files x-roles: - admin - reseller - customer summary: Move or rename a file or directory description: >- Move (rename) a file or directory from source to destination within the domain's webspace. Returns stat metadata of the resulting entry at the destination path. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or a path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or source path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Destination already exists and overwrite is false. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FileCopyMoveRequest' /domains/{id}/fs/chmod: put: tags: - Files x-roles: - admin - reseller - customer summary: Change file or directory permissions description: >- Set the permission mode (chmod) of a file or directory within the domain's webspace. Has no effect on Windows. Returns the updated stat metadata. parameters: - in: path name: id required: true description: Domain ID. example: 1 schema: type: integer - in: query name: path required: true description: >- Path to the file or directory. An absolute path (starting with "/" on Unix, or a drive letter such as "C:" on Windows) is used as-is; otherwise relative to the document root. example: index.html schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/File' '400': description: Invalid request parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: >- Access to the specified domain is denied, or the path is outside the webspace. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Domain not found, or the path does not exist. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FileChmodRequest' /ftpusers: get: tags: - FtpUsers x-roles: - admin - reseller - customer summary: List FTP users description: >- Retrieve a list of FTP users with optional filtering by username or domain. parameters: - in: query name: name description: Filter data by user name example: exampleuser schema: type: string - in: query name: domain description: Filter data by domain name example: example.com schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/FtpUser' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain/user is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true post: tags: - FtpUsers x-roles: - admin - reseller - customer summary: Create FTP user description: >- Create a new FTP user account with specified permissions and home directory. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FtpUser' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FtpUserRequest' /ftpusers/{name}: put: tags: - FtpUsers x-roles: - admin - reseller - customer summary: Update FTP user description: >- Update FTP user settings such as password, home directory, or permissions. parameters: - in: path name: name description: FTP user name required: true example: exampleuser schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: User is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FtpUserUpdateRequest' delete: tags: - FtpUsers x-roles: - admin - reseller - customer summary: Delete FTP user description: Delete an FTP user account and revoke all associated access. parameters: - in: path name: name description: FTP User name required: true example: exampleuser schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: User is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /databases: get: tags: - Databases x-roles: - admin - reseller - customer summary: List databases description: >- Retrieve a list of all databases on the server, with optional filtering by domain name. parameters: - in: query name: domain description: Filter data by domain name example: example.com schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Database' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Server is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true post: tags: - Databases x-roles: - admin - reseller - customer summary: Create database description: Create a new database on the specified database server. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Database' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DatabaseRequest' /databases/{id}: delete: tags: - Databases x-roles: - admin - reseller - customer summary: Delete database description: Delete a database and all its data from the database server. parameters: - in: path name: id description: Database ID required: true example: 10 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Database is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /dbusers: get: tags: - Databases x-roles: - admin - reseller - customer summary: List database users description: >- Retrieve a list of database users, with optional filtering by database ID. parameters: - in: query name: dbId description: Filter data by database ID example: 44 schema: type: integer responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/DatabaseUser' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain/database is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true post: tags: - Databases x-roles: - admin - reseller - customer summary: Create database user description: >- Create a new database user with specified credentials and database association. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DatabaseUser' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Server/database/domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DatabaseUserRequest' /dbusers/{id}: put: tags: - Databases x-roles: - admin - reseller - customer summary: Update database user description: Update database user settings, such as password or access permissions. parameters: - in: path name: id description: Database user ID required: true example: 12 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Server/database/domain is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DatabaseUserUpdateRequest' delete: tags: - Databases x-roles: - admin - reseller - customer summary: Delete database user description: Delete a database user and revoke all associated access rights. parameters: - in: path name: id description: Database user ID required: true example: 12 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Database user is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false /dbservers: get: tags: - Databases x-roles: - admin - reseller - customer summary: List database servers description: Retrieve a list of all database servers configured on the system. parameters: - in: query name: id description: Filter data by database server id example: 1 schema: type: integer responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/DatabaseServer' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Server is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true /dns/records: get: tags: - DNS x-roles: - admin - reseller - customer summary: List DNS records description: Retrieve all DNS records for a specific domain or domain alias. parameters: - in: query name: domain description: Filter by domain or domain alias name required: true example: example.com schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/DnsRecord' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Can not find DNS record by id '123' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true post: tags: - DNS x-roles: - admin - reseller - customer summary: Create DNS record description: Add a new DNS record to a domain or domain alias zone. parameters: - in: query name: domain description: Filter by domain or domain alias name required: true example: example.com schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DnsRecord' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: Domain or Domain Alias is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DnsRecordRequest' /dns/records/{id}: get: tags: - DNS x-roles: - admin - reseller - customer summary: Get DNS record description: Retrieve details of a specific DNS record by its ID. parameters: - in: path name: id description: DNS record ID required: true example: 123 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DnsRecord' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: DNS record is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: true put: tags: - DNS x-roles: - admin - reseller - customer summary: Update DNS record description: Modify an existing DNS record's properties and values. parameters: - in: path name: id description: DNS record ID required: true example: 123 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '400': description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: DNS record is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DnsRecordRequest' delete: tags: - DNS x-roles: - admin - reseller - customer summary: Delete DNS record description: Remove a DNS record from the domain's DNS zone. parameters: - in: path name: id description: DNS record ID required: true example: 123 schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/PermissionDeniedResponse' '404': description: DNS record is not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-readonly: false components: securitySchemes: BasicAuth: type: http scheme: basic description: HTTP Basic Authentication APIKeyHeader: type: apiKey in: header name: X-API-Key description: API Key Authentication ImpersonateLoginHeader: type: apiKey in: header name: X-Impersonate-Login description: >- Allows admin users to impersonate another user account. The API request will be executed in the context of the specified user. Only administrators can use this header. schemas: StatusResponse: type: object properties: status: description: Result of the operation type: string example: success required: - status CreatedResponse: type: object properties: id: description: Entity with the specified ID successfully created type: integer example: 100 guid: description: Entity successfully created, new GUID is type: string example: 18b78dd1-2b43-44f7-9599-56ccb56a85dc required: - id - guid ErrorResponse: type: object properties: code: type: integer example: 400 message: type: string example: Account with this name already exists required: - code - message PermissionDeniedResponse: type: object properties: code: type: integer example: 0 message: type: string example: Permission denied required: - code - message SecretKeyRequest: type: object description: Secret key parameters properties: ip: description: >- The IP address that will be linked to the key. If this node or 'ips' node is not specified, the IP address of the request sender will be used. type: string example: 195.214.233.128 ips: description: >- Array of IP addresses that will be linked to the key. If this node or 'ip' node is not specified, the IP address of the request sender will be used. type: array items: type: string example: - 93.184.216.34 - 2606:2800:220:1:248:1893:25c8:1946 login: description: >- The login name of an existing customer or a reseller that will have this secret key. The customer's or reseller's account should be active. If this node is not specified, the administrator's login will be used. type: string example: admin description: description: Additional information about the key. type: string example: Secret key for Administrator SecretKeyResponse: type: object properties: key: description: Secret key value. type: string example: c5b239d1-8eb6-8cee-76b7-aa16be37fee8 required: - key SessionRequest: type: object description: Session creation parameters required: - login properties: login: description: The login name of the user to create a session for. type: string example: admin user_ip: description: > The IP address of the user who will use the session. If not specified, the IP address of the request sender will be used. type: string example: 192.168.1.100 skip_mfa: description: Skip multi-factor authentication check for the created session. type: boolean default: false example: true SessionResponse: type: object properties: id: description: >- The session identifier. Use it to access the Plesk panel via: https://:/enterprise/rsession_init.php?PLESKSESSID= type: string example: ab1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e required: - id CliCallRequest: type: object description: Command execution parameters properties: params: type: array items: type: string example: - --get - FullHostName env: type: object example: PSA_PASSWORD: password fail_on_error: description: >- Respond with 422 status when the command returns a non-zero exit code. Recommended to enable when executing commands so failures are reported as errors instead of a successful response. type: boolean default: false example: true CliCallResponse: type: object description: Command execution result properties: code: description: Command return code. type: integer example: 0 stdout: description: Command stdout. type: string example: Done stderr: description: Command stderr. type: string example: Execution failed ServerMeta: type: object description: Server Meta Information properties: platform: description: Server platform type. type: string example: Unix hostname: description: Server hostname. type: string example: example.com guid: description: Server GUID. type: string example: baa58292-fee0-4ecb-9da1-bba0cc5adea7 panel_version: description: Product version. type: string example: 17.9.3 panel_revision: description: Product build revision. type: string example: 1711e2bceff6fd6656c821b8cb6444c2726f3784 panel_build_date: description: Product ISO build date. type: string format: date example: '2018-06-20' panel_update_version: description: Product installed update version. type: string example: '10' extension_version: description: REST API extension version. type: string example: 1.1.0 extension_release: description: REST API release number. type: string example: '10' required: - platform - hostname - guid - panel_version - panel_revision - panel_build_date - panel_update_version - extension_version - extension_release ServerInit: type: object description: Initial server setup parameters properties: admin: $ref: '#/components/schemas/Admin' password: description: >- The new Plesk Administrator's password that will replace the default one. type: string example: setup server_name: description: The full host name. type: string example: my-plesk-server.com required: - admin - password Admin: type: object description: Plesk administrator information properties: name: description: The administrator's personal name. type: string example: John Smith email: description: The administrator's e-mail address. type: string format: email example: john_smith@plesk.com company: description: The administrator's company name. type: string example: Plesk phone: description: The administrator's phone number. type: string example: +41 31 528 12 23 fax: description: The administrator's fax number. type: string example: +41 31 528 12 23 address: description: The administrator's street address. type: string example: Vordergasse 59 city: description: The name of the city where administrator lives. type: string example: Schaffhausen state: description: >- The name of state (for US citizens) or province where administrator lives. type: string example: Kanton Schaffhausen post_code: description: The administrator's zip/postal code. type: string example: '8200' country: description: The name of the country where administrator lives. type: string example: CH send_announce: description: >- It specifies whether Plesk announcement messages are sent to the administrator's e-mail. type: boolean example: false locale: description: The locale used by the administrator. type: string example: en-US multiple_sessions: description: >- It specifies the information if the administrator has multiple sessions in Plesk. type: boolean example: false required: - name - email ServerIp: type: object description: Server IP Addresses properties: ipv4: description: The IP address in Plesk database (IPv4). type: string format: ipv4 example: 93.184.216.34 ipv6: description: The IP address in Plesk database (IPv6). type: string format: ipv6 example: 2606:2800:220:1:248:1893:25c8:1946 netmask: description: The netmask of the network. type: string example: 255.255.255.0 interface: description: The server network interface name. type: string example: eth0 type: description: 'The type of IP address. Allowed values: shared | exclusive.' type: string enum: - shared - exclusive example: exclusive required: - netmask - interface - type ServerLicense: type: object description: License parameters properties: key: description: License key data. type: string example: >- /RjdfLic1RwpNPkEnLlxNJkJCPzNDWSRDOyVeJDI/MSo1RlFEMD4+VTEzKTk3S0pfVjFOJTZFXzMpTEVPQC5JRjdUR0RZCk0hMSJYOzYhVFxPI14jTFJPRSlaRFI0VjZWPEYiT1s5T0opJV8+NCMnUigvQ1o7K0U+QEtbISc1MlMqLV0KTSorUDVfMzxHNUkrSksxWzZVNVZJXTc5T18xQVNNNzRXWTo3WVkmW0I/J2AnYC4iJTlTP1grSCdYS0E+RApNPVteRk43RCNAVFpVO0dBO1hZMjo+K0pQNEsiLj5UUDQlLDA7XyVZIVo/QypGJiJcW1FbJF1fVVxUJy5ECk1HXCpSUzwtUVYoJzwsVV47MT5bJD8wWlgyYCo/KTM0QUJFMmAuOjc7QypMWylfQiFVP05PRj05LCY5SkgKTVRTWE9cRi84OUgxJDpgLl5RPEtPPkE4RCUtXU06NixHLi1ZL0ZBVSkyVkBVUCgiN0YrKyoyXTJMJ08qVwpNIk4lOyFeLFwmIiQ4NkBgMUEmTDRcWDdJKihZTEMhTENOJEMiKV0wIzkkSU4qMTEzO1BIJjo4K0U3LzU6Ck0wPCNTUytONjAhQEFROCFbUDI5OktVLlEsMlY9ND1gSjpgJVMjLS4tVzsrRzpAME8yVTpLVmAiT1NHLFAKTVU0SSowNVo1IShEWipAO10tRlsxQldVSkZSKDcyPjpWLik5I0YzWD0yVTs9NTlNL1dASyglXk5YN1U4UgpNTV8sXD0tRTQuLkBFMVk2I0REUCItXyVMNlRPRkEyTEA7Pl9QO10jUSI6I1tNIzVRU0VZVE1HWDInIzk4Ck1XRUNPVz5CSFUjUSo4K0IvOFlDWSNTLydXSls7KD9VTD8+WzUqQEA5Uic0S1BMJSowOk9fQ0QvQThUVCEKTT1AKiJFKztAKCFXNl9ORDhUVlleOCU5JS8rJzc+JEZUXigzMDs4PDtbNkUpPD8vUiJAREQoTkxUPlQ2JgpNVFdbVz9bT10mVy5FVEkyXD5MPSIkMkRVVipKWTolXVhRTzkoM1tLLSJRJFlXNTRTYEBNWy1UUV09K04wCk1SVWBbLyckXj5KXjsnUzgyRzE3QVUlWilXX0ZCX1BGMkRMSThHXjZBWE5FTUBEMjBgRTomVTpVLy1WRCQKTVtWUyQ+XDcsRUA+XU0hXz4pKFxBJ1JCNUQ6XCEnQjoyPFw code: description: Activation code. type: string example: AB1C23-4DEF56-7GHI89-JK1L23-MNP456 additional: description: It specifies if the key that will be installed is an additional key. type: boolean example: false Extension: type: object description: Extension entity properties: id: description: Extension identifier. type: string example: letsencrypt name: description: Human readable name. type: string example: Let's Encrypt version: description: Extension version. type: string example: 2.6.1 release: description: Extension release number. type: string example: '398' active: description: Extension status. type: boolean example: true required: - id - name - version - release - active ExtensionInstallRequest: type: object description: Extension installation request properties: id: description: Installation by Identifier. type: string example: letsencrypt url: description: Installation by URL. type: string example: https://example.com/catalog/letsencrypt.zip file: description: Installation by file. type: string example: /path/to/extension.zip Client: type: object description: The client entity properties: id: description: The client's ID. type: integer example: 7 created: description: Creation date. type: string format: date example: '2016-11-13' name: description: Client's personal name (1 to 60 characters long). type: string example: John Smith company: description: The company name (0 to 60 characters long). type: string example: Plesk login: description: The login name of the client account (1 to 60 characters long). type: string x-validators: - UniqueClientLogin example: john-unit-test status: description: >- The current status of the client account. Allowed values: 0 (active) | 16 (disabled by admin) | 4 (under backup/restore) | 256 (expired). type: integer example: 0 email: description: >- The email address of the client account owner (0 to 255 characters long). type: string example: john_smith@msn.com locale: description: 'The locale used on the client account. Default value: en-US.' type: string example: en-US guid: description: The global user ID of the client account just added to Plesk. type: string example: 18b78dd1-2b43-44f7-9599-56ccb56a85dc owner_login: description: >- The login name of a client account owner. If the client account owner is Plesk Administrator, specify the admin login name. type: string example: admin external_id: description: >- The client GUID in the Plesk components (for example, Business Manager). type: string example: link:12345 description: description: The description for the client account. type: string example: Nice guy type: description: >- The type of the client account. Allowed values: reseller | customer | admin. type: string enum: - reseller - customer - admin example: reseller required: - id - created - name - company - login - status - email - locale - guid - description - type ClientRequest: type: object description: The client entity properties: name: description: Client's personal name (1 to 60 characters long). type: string example: John Smith company: description: The company name (0 to 60 characters long). type: string example: Plesk login: description: The login name of the client account (1 to 60 characters long). type: string x-validators: - UniqueClientLogin example: john-unit-test status: description: >- The current status of the client account. Allowed values: 0 (active) | 16 (disabled by admin) | 4 (under backup/restore) | 256 (expired). type: integer example: 0 email: description: >- The email address of the client account owner (0 to 255 characters long). type: string example: john_smith@msn.com locale: description: 'The locale used on the client account. Default value: en-US.' type: string example: en-US owner_login: description: >- The login name of a client account owner. If the client account owner is Plesk Administrator, specify the admin login name. type: string example: admin external_id: description: >- The client GUID in the Plesk components (for example, Business Manager). type: string example: link:12345 description: description: The description for the client account. type: string example: Nice guy password: description: The password of the client account (5 to 14 characters long). type: string x-validators: - PasswordStrength example: changeme1Q** type: description: >- The type of the client account. Allowed values: reseller | customer | admin. type: string enum: - reseller - customer - admin example: reseller required: - name - login - password - email - type ClientUpdateRequest: type: object description: The client entity properties: name: description: Client's personal name (1 to 60 characters long). type: string example: John Smith company: description: The company name (0 to 60 characters long). type: string example: Plesk login: description: The login name of the client account (1 to 60 characters long). type: string x-validators: - UniqueClientLogin example: john-unit-test status: description: >- The current status of the client account. Allowed values: 0 (active) | 16 (disabled by admin) | 4 (under backup/restore) | 256 (expired). type: integer example: 0 email: description: >- The email address of the client account owner (0 to 255 characters long). type: string example: john_smith@msn.com locale: description: 'The locale used on the client account. Default value: en-US.' type: string example: en-US owner_login: description: >- The login name of a client account owner. If the client account owner is Plesk Administrator, specify the admin login name. type: string example: admin external_id: description: >- The client GUID in the Plesk components (for example, Business Manager). type: string example: link:12345 description: description: The description for the client account. type: string example: Nice guy password: description: The password of the client account (5 to 14 characters long). type: string x-validators: - PasswordStrength example: changeme1Q** ClientStatistics: type: object description: Client's usage properties: active_domains: description: The number of active domains created by a client. type: integer example: 1 subdomains: description: The number of sub-domains created by a client. type: integer example: 0 disk_space: description: The amount of disk space occupied by the given a client. type: integer example: 765952 email_postboxes: description: The number of email boxes created by a client. type: integer example: 1 email_redirects: description: The number of redirects created by a client. type: integer example: 0 email_response_messages: description: The number of automatic response messages created by a client. type: integer example: 0 mailing_lists: description: The number of mailing lists created by a client. type: integer example: 0 databases: description: The number of databases used by a client. type: integer example: 0 traffic: description: The amount of traffic (in bytes) spent by a client monthly. type: integer example: 0 traffic_prevday: description: >- The amount of traffic (in bytes) spent by a client during the previous day. type: integer example: 0 required: - active_domains - subdomains - disk_space - email_postboxes - email_redirects - email_response_messages - mailing_lists - databases - traffic - traffic_prevday DomainRequest: type: object properties: name: description: Domain name. type: string example: example.com description: description: The description for the domain. type: string example: My website hosting_type: description: >- It specifies the hosting type of the created domain. Allowed values: virtual | standard_forwarding | frame_forwarding | none.

        Meanings: `virtual` - the domain ships with physical hosting.
    
        `standard_forwarding` - the domain ships with standard forwarding. 
        When the user goes to a domain on which the standard forwarding is
        set, Plesk redirects this user from the requested URL to the
        destination URL. This is done explicitly: the user sees the real
        ‘destination’ address in the path bar of the browser.
    
        `frame_forwarding` - the domain ships with frame forwarding. When
        the user goes to such site on which frame forwarding is set, Plesk
        redirects this user from the requested URL to the ‘destination’ URL
        implicitly (the user still sees the initial URL in the path bar of
        the browser).
    
        `none` - no hosting ships with the domain.
      type: string
      enum:
        - virtual
        - standard_forwarding
        - frame_forwarding
        - none
    hosting_settings:
      description: >2-
         Fields depend on the `hosting_type` value:
        for `virtual`:
    
        `ftp_login` - FTP user login name (required when creating a
        subscription). `ftp_password` - FTP user password (required when
        creating a subscription). `www_root` - WWW root directory for the
        domain (optional, defaults to the domain name).
    
        for `standard_forwarding`:
    
        `dest_url` - URL to redirect the visitor to (required). `http_code`
        - HTTP redirect code; allowed values: `301`, `302` (optional,
        defaults to `301`).
    
        for `frame_forwarding`:
    
        `dest_url` - URL to load inside the frame (required).
    
        for `none`: no fields are expected.
      type: object
      properties:
        ftp_login:
          type: string
          x-validators:
            - UniqueFtpLogin
          example: login
        ftp_password:
          type: string
          example: qwe123
        www_root:
          type: string
          description: WWW root directory for the domain (optional).
          example: sub.example.com
        dest_url:
          type: string
          example: https://example.com
        http_code:
          type: integer
          enum:
            - 301
            - 302
          example: 301
      additionalProperties: false
      example:
        ftp_login: test_login
        ftp_password: changeme1Q**
    base_domain:
      $ref: '#/components/schemas/DomainReference'
    parent_domain:
      $ref: '#/components/schemas/DomainReference'
    owner_client:
      $ref: '#/components/schemas/OwnerClientReference'
    ip_addresses:
      description: The IP address associated with the domain.
      type: array
      items:
        type: string
      example:
        - 93.184.216.34
        - 2606:2800:220:1:248:1893:25c8:1946
    ipv4:
      description: '@deprecated'
      type: array
      items:
        type: string
        format: ipv4
      example:
        - 93.184.216.34
    ipv6:
      description: '@deprecated'
      type: array
      items:
        type: string
        format: ipv6
      example:
        - 2606:2800:220:1:248:1893:25c8:1946
    plan:
      $ref: '#/components/schemas/PlanReference'
    

    DomainResponse: type: object properties: id: description: Domain ID. type: integer example: 7 name: description: Domain name. type: string example: example.com ascii_name: description: Domain display name. type: string example: ascii-example.com hosting_type: description: Domain hosting type. type: string enum: - virtual - standard_forwarding - frame_forwarding - none base_domain_id: description: Base domain ID. type: integer example: 3 www_root: description: WWW Root on filesystem type: string example: /var/www/vhosts/example.com/httpdocs guid: description: Domain GUID. type: string example: b623e93d-dc72-4102-b5f0-ded427cf0fb1 created: description: Creation date. type: string format: date example: '2016-11-13' aliases: x-since: 18.0.42 description: Domain aliases that point to this domain. type: array items: $ref: '#/components/schemas/DomainAlias' required: - id - name - ascii_name - hosting_type - base_domain_id - www_root - guid - created DomainReference: type: object description: >- Reference to a domain. At least one of id, name, or guid must be provided. anyOf: - title: id required: - id - title: name required: - name - title: guid required: - guid properties: id: description: Domain ID. type: integer example: 7 name: description: Domain name. type: string example: example.com guid: description: Domain GUID. type: string example: b623e93d-dc72-4102-b5f0-ded427cf0fb1 DomainUpdateRequest: type: object properties: name: description: Domain name. type: string example: example.com description: description: The description for the domain. type: string example: My website hosting_type: description: >- Hosting type. Allowed values: virtual | standard_forwarding | frame_forwarding | none. type: string enum: - virtual - standard_forwarding - frame_forwarding - none hosting_settings: description: >2- Fields depend on the hosting_type value: for virtual:

        `ftp_login` - FTP user login name (required when creating a
        subscription). `ftp_password` - FTP user password (required when
        creating a subscription). `www_root` - WWW root directory for the
        domain (optional, defaults to the domain name).
    
        for `standard_forwarding`:
    
        `dest_url` - URL to redirect the visitor to (required). `http_code`
        - HTTP redirect code; allowed values: `301`, `302` (optional,
        defaults to `301`).
    
        for `frame_forwarding`:
    
        `dest_url` - URL to load inside the frame (required).
    
        for `none`: no fields are expected.
      type: object
      properties:
        ftp_login:
          type: string
          x-validators:
            - UniqueFtpLogin
          example: login
        ftp_password:
          type: string
          example: qwe123
        www_root:
          type: string
          description: WWW root directory for the domain (optional).
          example: sub.example.com
        dest_url:
          type: string
          example: https://example.com
        http_code:
          type: integer
          enum:
            - 301
            - 302
          example: 301
      additionalProperties: false
      example:
        ftp_login: test_login
        ftp_password: changeme1Q**
    owner_client:
      $ref: '#/components/schemas/OwnerClientReference'
    ip_addresses:
      description: The IP address associated with the domain.
      type: array
      items:
        type: string
      example:
        - 93.184.216.34
        - 2606:2800:220:1:248:1893:25c8:1946
    ipv4:
      description: '@deprecated'
      type: array
      items:
        type: string
        format: ipv4
      example:
        - 93.184.216.34
    ipv6:
      description: '@deprecated'
      type: array
      items:
        type: string
        format: ipv6
      example:
        - 2606:2800:220:1:248:1893:25c8:1946
    plan:
      $ref: '#/components/schemas/PlanReference'
    

    DomainStatus: type: object properties: status: description: Status of the specified domain. type: string enum: - active - suspended - disabled example: active required: - status DomainExecRequest: type: object description: Domain shell command execution parameters properties: command: description: >- Command to execute with its arguments. First element is the command name, subsequent elements are arguments. type: array items: type: string minLength: 1 example: - whoami stdin: description: Standard input to pass to the command. type: string example: '' env: description: Environment variables to set for the command execution. type: object additionalProperties: type: string example: APP_ENV: production working_directory: description: >- Working directory for the command. Defaults to the domain's document root. type: string example: public fail_on_error: description: >- Respond with 422 status when the command returns a non-zero exit code. Recommended to enable when executing commands so failures are reported as errors instead of a successful response. type: boolean default: false example: true required: - command DomainExecResponse: type: object description: Domain shell command execution result properties: code: description: Command return code (exit status). type: integer example: 0 stdout: description: Command standard output. type: string example: root stderr: description: Command standard error output. type: string example: '' required: - code - stdout - stderr DomainLogEntry: type: object description: Single domain log entry properties: path: description: Log file path type: string example: /var/www/vhosts/example.com/logs/error_log line: description: Raw log line content type: string example: >- [Mon May 26 10:15:32 2026] [error] [client 192.168.1.1] File does not exist: /var/www/vhosts/example.com/httpdocs/missing.html required: - path - line LogTypeInfo: type: object description: Log type information with count and time range properties: count: description: Number of log entries found for this log type type: integer example: 42 time_range: description: Time range specific to this log type type: object required: - min - max properties: min: description: Earliest timestamp for this log type, null if no logs found type: string format: date-time nullable: true example: '2026-05-21T10:00:00Z' max: description: Latest timestamp for this log type, null if no logs found type: string format: date-time nullable: true example: '2026-05-22T15:30:00Z' required: - count - time_range DomainLogsResponse: type: object description: Domain logs search response with per-log-type time ranges properties: entries: description: Array of sample log entries matching the search criteria type: array items: $ref: '#/components/schemas/DomainLogEntry' log_type_counts: description: Log entry counts grouped by log type with individual time ranges type: object additionalProperties: $ref: '#/components/schemas/LogTypeInfo' example: apache_error: count: 5 time_range: min: '2026-05-21T10:00:00Z' max: '2026-05-22T15:30:00Z' nginx_error: count: 3 time_range: min: '2026-05-22T08:00:00Z' max: '2026-05-22T14:00:00Z' php_fpm_error: count: 7 time_range: min: '2026-05-22T12:00:00Z' max: '2026-05-22T15:00:00Z' access: count: 1523 time_range: min: '2026-05-21T00:00:00Z' max: '2026-05-22T23:59:59Z' xferlog: count: 42 time_range: min: '2026-05-21T05:00:00Z' max: '2026-05-22T20:00:00Z' modsecurity_error: count: 8 time_range: min: '2026-05-22T10:30:00Z' max: '2026-05-22T14:45:00Z' required: - entries - log_type_counts DnsCheck: type: object description: A single DNS check result properties: category: type: string enum: - dns-management - web - mail - email-auth - propagation example: mail name: type: string example: A record result: type: string enum: - Pass - Fail - Skipped - Could not determine example: Fail fact: type: string example: 'A record: 203.0.113.5. This server uses 198.51.100.10.' context: type: string example: 203.0.113.5 serves IPv4 visitors, not this server. evidence: description: >- Free-form, check-specific supporting data (records, TTL, resolver, timestamp). type: object additionalProperties: true required: - category - name - result - fact - context DomainDnsResolutionResponse: type: object description: Domain DNS resolution check report properties: summary: description: Neutral counts per result; no overall verdict. type: object additionalProperties: true example: total: 15 counts: Pass: 9 Fail: 3 Skipped: 2 Could not determine: 1 checks: type: array items: $ref: '#/components/schemas/DnsCheck' required: - summary - checks OwnerClientReference: type: object description: Reference to a client. One of the following properties is required. anyOf: - title: id required: - id - title: login required: - login - title: guid required: - guid - title: external_id required: - external_id properties: id: description: The client's ID. type: integer example: 7 login: description: The login name of the client account owner. type: string example: owner guid: description: The global user ID of the client account just added to Plesk. type: string example: b623e93d-dc72-4102-b5f0-ded427cf0fb1 external_id: description: >- The client GUID in the Plesk components (for example, Business Manager). type: string example: b623e93d-dc72-4102-b5f0-ded427cf0fb1 PlanReference: type: object description: >- Identifies the service plan. One of the following properties is required. anyOf: - title: id required: - id - title: name required: - name - title: guid required: - guid - title: external_id required: - external_id properties: name: description: Service plan name. type: string example: Unlimited id: description: Service plan ID. type: integer example: 7 guid: description: Service plan GUID. type: string example: b623e93d-dc72-4102-b5f0-ded427cf0fb1 external_id: description: Service plan external ID. type: string example: plan-ext-001 DomainAlias: type: object properties: id: description: Domain alias ID. type: integer example: 123 name: description: Domain alias name. type: string example: example.com ascii_name: description: Domain alias name in ASCII. type: string example: ascii-example.com web: description: Web service status. type: boolean example: false dns: description: DNS service status. type: boolean example: true mail: description: Mail service status. type: boolean example: false seo_redirect: description: 301 redirect to HTTPS status. type: boolean example: true required: - id - name - ascii_name - web - dns - mail - seo_redirect FtpUser: type: object properties: id: description: User ID in the database type: integer example: 2 name: description: User name in the system type: string example: exampleuser home: description: Subdirectory of the WWW Root that user is restricted to type: string example: /httpdocs quota: description: Hard disk quota in bytes (if supported by platform) type: integer example: -1 permissions: description: Access permissions of the user (if supported by platform) type: object properties: write: type: string enum: - 'true' - 'false' read: type: string enum: - 'true' - 'false' parent_domain: description: ID of the parent domain type: integer example: 4 required: - id - name - home - parent_domain FtpUserRequest: type: object properties: name: description: User name in the system type: string example: exampleuser password: description: User password type: string example: changeme1Q** home: description: Subdirectory of the WWW Root that user is restricted to type: string example: /httpdocs quota: description: Hard disk quota in bytes (if supported by platform) type: integer example: -1 permissions: description: Access permissions of the user (if supported by platform) type: object properties: read: type: string enum: - 'true' - 'false' write: type: string enum: - 'true' - 'false' parent_domain: $ref: '#/components/schemas/DomainReference' required: - name - password - parent_domain FtpUserUpdateRequest: type: object properties: name: description: User name in the system type: string example: exampleuser password: description: User password type: string home: description: Subdirectory of the WWW Root that user is restricted to type: string example: /httpdocs quota: description: Hard disk quota in bytes (if supported by platform) type: integer example: -1 permissions: description: Access permissions of the user (if supported by platform) type: object properties: read: type: string enum: - 'true' - 'false' write: type: string enum: - 'true' - 'false' Database: type: object properties: id: description: ID of the database type: integer example: 2 name: description: Database name type: string example: exampledb type: description: Database server type type: string enum: - mssql - mysql - postgresql parent_domain: description: ID of the parent domain type: integer example: 3 server_id: description: ID of the database server type: integer example: 1 default_user_id: description: ID of the default database user for database type: integer example: 6 DatabaseRequest: type: object required: - name - parent_domain properties: name: description: Database name type: string example: exampledb type: description: Database server type type: string enum: - mssql - mysql - postgresql parent_domain: $ref: '#/components/schemas/DomainReference' server_id: description: ID of the database server type: integer example: 1 DatabaseServer: type: object properties: id: description: ID of the database server type: integer example: 1 host: description: Database server host type: string example: 127.0.0.1 port: description: Database server port type: integer example: 3306 type: description: Database server type type: string enum: - mssql - mysql - postgresql status: description: Database server status type: string db_count: description: Database server database count type: integer example: 123 is_default: description: Flag that server is default for servers of this type type: boolean is_local: description: Flag that server is installed on local service node type: boolean DatabaseUser: type: object properties: id: description: ID of the database user type: integer example: 5 login: description: Database user login type: string example: exampledbuser database_id: description: >- ID of the database this user has access to. A value of 0 means the user has access to all databases on the subscription (created with server_id instead of database_id). type: integer example: 12 DatabaseUserRequest: type: object description: >- Either parent_domain and server_id together, or database_id must be provided. properties: login: description: Database user login type: string example: exampledbuser password: description: User password type: string example: changeme1Q** parent_domain: $ref: '#/components/schemas/DomainReference' server_id: description: >- ID of the database server (if user should have access to all databases on subscription) type: integer example: 9 database_id: description: ID of the database (if user should have access to one database) type: integer example: 3 required: - login - password anyOf: - title: parent_domain and server_id required: - parent_domain - server_id - title: database_id required: - database_id DatabaseUserUpdateRequest: type: object properties: login: description: Database user login type: string example: exampledbuser password: description: New user password type: string example: changeme1Q** DnsRecord: type: object properties: id: description: Unique identifier of the DNS record type: integer type: description: The type of the DNS record type: string enum: - A - CNAME - PTR - MX - NS - TXT - SOA - AXFR - SRV - AAAA - DS - CAA - TLSA - HTTPS host: description: The IP address or name of a host, that will be used by DNS type: string value: description: The value that will be linked with the host value type: string opt: description: Optional information about the DNS record type: string ttl: description: >- The amount of time (in seconds) that slave DNS servers should store the record in a cache type: integer DnsRecordRequest: type: object properties: type: description: The type of the DNS record type: string enum: - A - CNAME - PTR - MX - NS - TXT - SOA - AXFR - SRV - AAAA - DS - CAA - TLSA - HTTPS host: description: The IP address or name of a host, that will be used by DNS type: string value: description: The value that will be linked with the host value type: string opt: description: Optional information about the DNS record type: string ttl: description: >- The amount of time (in seconds) that slave DNS servers should store the record in a cache type: integer FileContentResponse: type: object properties: encoding: description: Content transfer encoding of the "content" field. type: string enum: - plain - base64 example: plain content: description: File contents encoded according to "encoding". type: string example: hello world required: - encoding - content FileChmodRequest: type: object properties: mode: description: >- Octal permission mode (4 digits, e.g. "0755"). Only the low nine permission bits (owner/group/other) are accepted; the leading digit must be "0". Setuid, setgid, and sticky bits are not allowed. type: string pattern: ^0[0-7]{3}$ example: '0755' required: - mode FileCopyMoveRequest: type: object properties: source: description: > Source path. A leading "/" is treated as an absolute filesystem path;

        otherwise the path is resolved relative to the domain's document
        root.
      type: string
      example: old-name.txt
    destination:
      description: >
        Destination path. A leading "/" is treated as an absolute filesystem
        path;
    
        otherwise the path is resolved relative to the domain's document
        root.
      type: string
      example: new-name.txt
    overwrite:
      description: Whether to overwrite the destination if it already exists.
      type: boolean
      default: false
    

    required: - source - destination FileContentRequest: type: object properties: encoding: description: Content transfer encoding of the "content" field. type: string enum: - plain - base64 example: base64 content: description: >- File contents encoded according to "encoding". May be empty to write an empty file. type: string example: SGVsbG8sIHdvcmxkIQ== required: - encoding - content File: type: object properties: name: description: Entry basename. type: string example: index.html path: description: >- Path relative to the domain's document root. Can be sent back as the path query parameter. type: string example: index.html fullpath: description: Absolute filesystem path. type: string example: /var/www/vhosts/example.com/httpdocs/index.html type: description: Filesystem entry type. type: string enum: - file - directory example: file size: description: Entry size in bytes. type: integer format: int64 example: 1024 mtime: description: Last modification time as Unix timestamp. type: integer example: 1715587200 mode: description: Octal permission mode (4 digits). type: string example: '0644' required: - name - path - fullpath - type - size - mtime - mode