openapi: 3.0.2 info: title: NetXMS API description: REST API for NetXMS network monitoring server version: 1.0.0 tags: - name: Authentication description: User authentication and session management - name: Alarms description: Alarm management operations - name: Objects description: Object management and queries - name: Data Collection description: Data collection items and historical data - name: TCP Proxy description: TCP proxy for remote access (VNC, SSH, etc.) - name: Grafana description: Grafana integration endpoints - name: Scheduled Tasks description: Scheduled task management - name: Script Library description: NXSL script library management - name: Server Actions description: Server action management - name: Server description: Server information and status - name: AI Chat description: AI assistant chat sessions - name: AI Management description: AI skills and functions management - name: AI Saved Prompts description: Per-user saved prompts for the AI assistant - name: Object Tools description: Object tool management - name: Find description: Network search operations - name: Geo Areas description: Geographic area management - name: Object Categories description: Object category management - name: Image Library description: Image library management - name: DCI Summary Tables description: DCI summary table operations - name: Event Templates description: Event template management - name: Users description: User management - name: User Groups description: User group management - name: Notification Channels description: Notification channel and driver management - name: SSH Keys description: SSH key management - name: Two-Factor Authentication description: Two-factor authentication method management and user bindings - name: Web Service Definitions description: Web service definition management paths: /: get: operationId: getRoot summary: Root endpoint description: Root API endpoint providing basic API information. responses: '200': description: API root information content: application/json: schema: type: object properties: description: type: string description: API description version: type: string description: NetXMS version build: type: string description: Build tag apiVersion: type: integer description: API version number security: [] tags: - Server /v1/server-info: get: operationId: getServerInfo summary: Get server information description: Retrieve detailed server information including version, build, and configuration details. responses: '200': description: Server information retrieved successfully content: application/json: schema: type: object properties: version: type: string description: Server version build: type: string description: Build tag id: type: integer description: Server ID name: type: string description: Server name color: type: string description: Server color (for UI theming) messageOfTheDay: type: string description: Message of the day tz: type: string description: Server timezone options: type: object properties: zoningEnabled: type: boolean strictAlarmStatusFlow: type: boolean timedAlarmAckEnabled: type: boolean helpdeskLinkActive: type: boolean tileServerURL: type: string dateTimeFormat: type: object properties: date: type: string description: Date format string timeLong: type: string description: Long time format string timeShort: type: string description: Short time format string components: type: array items: type: object description: Registered server components '401': description: Unauthorized security: - BearerAuth: [] tags: - Server /v1/status: get: operationId: getSessionStatus summary: Get session status description: Retrieve current session status including user information. responses: '200': description: Session status retrieved successfully content: application/json: schema: type: object properties: userId: type: integer description: Current user ID userName: type: string description: Current user login name systemAccessRights: type: integer description: User's system access rights bitmask '401': description: Unauthorized security: - BearerAuth: [] tags: - Server /v1/tcp-proxy: post: operationId: createTcpProxySession summary: Create TCP Proxy Session description: | Create a TCP proxy session and return a short-lived token for WebSocket connection. This is the first step in establishing a TCP proxy connection. The returned token should be used to connect to the WebSocket endpoint `/v1/tcp-proxy/{token}`. **Two-Phase Authorization Flow:** 1. Call this endpoint with Bearer token authentication to create a TCP tunnel 2. Server establishes connection to target via agent and returns a session token 3. Connect to `/v1/tcp-proxy/{token}` WebSocket endpoint (no auth header needed) This flow is designed to work with browser WebSocket API which cannot send custom Authorization headers. **Required Permissions:** - System access right: SYSTEM_ACCESS_SETUP_TCP_PROXY - Object access right: OBJECT_ACCESS_CONTROL on the target or proxy object requestBody: required: true content: application/json: schema: type: object required: - port properties: allowControlMessages: type: boolean description: If true, server will send JSON control messages in text frames (default is false) proxyId: type: integer description: | Proxy node ID or zone object ID. If specified, the connection will be established through this proxy node. Either proxyId or nodeId must be specified. nodeId: type: integer description: | Target node ID. If proxyId is not specified, the server will automatically select the appropriate proxy for this node. Either proxyId or nodeId must be specified. address: type: string format: ip-address description: | Target IP address. Required when proxyId is specified. When using nodeId, the node's primary IP address is used automatically. port: type: integer minimum: 1 maximum: 65535 description: Target TCP port number (required). example: nodeId: 123 port: 5900 responses: '201': description: TCP proxy session created successfully. content: application/json: schema: type: object properties: token: type: string format: uuid description: Session token for WebSocket connection expiresIn: type: integer description: Token validity period in seconds wsUrl: type: string description: WebSocket URL path to connect to example: token: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" expiresIn: 30 wsUrl: "/v1/tcp-proxy/a1b2c3d4-e5f6-7890-abcd-ef1234567890" '400': description: | Bad Request - Invalid parameters. Possible reasons: - Port parameter missing - Invalid IP address format - Invalid proxy object type '401': description: Unauthorized - Authentication token missing or invalid '403': description: | Forbidden - User does not have required permissions. Either SYSTEM_ACCESS_SETUP_TCP_PROXY or OBJECT_ACCESS_CONTROL is missing. '404': description: Object not found - Invalid nodeId or proxyId '502': description: | Bad Gateway - Cannot establish connection to agent. Agent may be unreachable or TCP proxy setup failed. '503': description: Service Unavailable - No proxy node available in zone security: - BearerAuth: [] tags: - TCP Proxy /v1/tcp-proxy/{token}: get: operationId: connectTcpProxy summary: TCP Proxy WebSocket Connection description: | Establish a WebSocket connection for TCP proxy data transfer. This endpoint requires a valid session token obtained from `POST /v1/tcp-proxy`. **Token Properties:** - Single-use: token is invalidated upon WebSocket connection - Short-lived: expires after 30 seconds if not used - No authentication header needed: token in path serves as authorization **WebSocket Protocol:** - Binary frames (opcode 0x02) are used for data transfer in both directions - Text frames (opcode 0x01) are used for control messages (JSON format) - Close frame (opcode 0x08) terminates the connection **Control Messages (JSON):** - Connection ready: `{"type": "connected", "channelId": 12345}` - Close notification: `{"type": "close", "reason": "normal|error|agent_disconnect"}` parameters: - name: token in: path required: true schema: type: string format: uuid description: Session token obtained from POST /v1/tcp-proxy responses: '101': description: | Switching Protocols - WebSocket connection established successfully. After upgrade, the connection enters WebSocket mode for bidirectional data transfer. A JSON message `{"type": "connected", "channelId": N}` is sent after successful upgrade. headers: Upgrade: schema: type: string example: websocket Connection: schema: type: string example: Upgrade Sec-WebSocket-Accept: schema: type: string '401': description: | Unauthorized - Token is invalid, expired, or already used. WebSocket close frame with code 1008 (Policy Violation) is sent. security: [] tags: - TCP Proxy /v1/ai/chat: post: operationId: createAiChat summary: Create AI chat session description: Create a new AI assistant chat session. requestBody: required: false content: application/json: schema: type: object properties: incidentId: type: integer description: Optional incident ID to associate with the chat session responses: '201': description: Chat session created successfully content: application/json: schema: type: object properties: chatId: type: integer description: ID of the created chat session created: type: string format: date-time description: Creation timestamp '400': description: Invalid incident ID '401': description: Unauthorized '500': description: Failed to create chat session security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}/message: post: operationId: sendAiChatMessage summary: Send message to AI chat description: | Send a message to the AI assistant. Returns 202 Accepted and processes asynchronously. Use GET /v1/ai/chat/{chat-id}/status to poll for result. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID requestBody: required: true content: application/json: schema: type: object required: - message properties: message: type: string description: Message text to send to AI assistant context: type: object description: Optional context object passed to the AI assistant responses: '202': description: Message accepted for processing content: application/json: schema: type: object properties: status: type: string enum: [processing] '400': description: Invalid chat ID or missing message '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found '409': description: Another request is already in progress security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}/status: get: operationId: getAiChatStatus summary: Get AI chat processing status description: | Poll for the current processing status of an AI chat session. Returns the status (idle, processing, completed, or error) along with any pending question, completed response, or error message. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID responses: '200': description: Status retrieved successfully content: application/json: schema: type: object properties: status: type: string enum: [idle, processing, completed, error] description: Current processing state pendingQuestion: description: Pending question from AI (present when status is processing) nullable: true currentFunction: type: string description: Name of the function currently being executed by AI (present when status is processing) nullable: true response: type: string description: AI response text (present when status is completed) nullable: true errorMessage: type: string description: Error description (present when status is error) '400': description: Invalid chat ID '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}/question: get: operationId: getAiChatQuestion summary: Poll for pending AI question description: Check if the AI assistant has a pending question that needs user input. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID responses: '200': description: Question status retrieved content: application/json: schema: type: object properties: question: description: Pending question object, or null if no question is pending nullable: true '400': description: Invalid chat ID '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}/answer: post: operationId: answerAiChatQuestion summary: Answer pending AI question description: Provide an answer to a pending question from the AI assistant. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID requestBody: required: true content: application/json: schema: type: object required: - questionId properties: questionId: type: integer format: int64 description: ID of the question being answered positive: type: boolean description: Whether the answer is positive (default false) selectedOption: type: integer description: Index of selected option (-1 if none) responses: '200': description: Answer accepted content: application/json: schema: type: object properties: success: type: boolean '400': description: Invalid chat ID or missing question ID '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}/clear: post: operationId: clearAiChatHistory summary: Clear AI chat history description: Clear the conversation history of an AI chat session. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID responses: '204': description: Chat history cleared successfully '400': description: Invalid chat ID '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found security: - BearerAuth: [] tags: - AI Chat /v1/ai/chat/{chat-id}: delete: operationId: deleteAiChat summary: Delete AI chat session description: Delete an AI chat session and all its history. parameters: - name: chat-id in: path required: true schema: type: integer description: Chat session ID responses: '204': description: Chat session deleted successfully '400': description: Invalid chat ID '401': description: Unauthorized '403': description: Access denied '404': description: Chat session not found security: - BearerAuth: [] tags: - AI Chat /v1/ai/skills-and-functions: get: operationId: getAiSkillsAndFunctions summary: Get AI skills, functions, and disabled items description: >- Returns all registered AI skills and functions with their disabled status, plus stop list entries that do not correspond to any registered entity. Requires MANAGE_AI_SKILLS or USE_AI_ASSISTANT access right. responses: '200': description: Skills, functions, and disabled extras retrieved successfully content: application/json: schema: type: object properties: skills: type: array items: type: object properties: name: type: string description: type: string disabled: type: boolean supportsDelegation: type: boolean defaultMode: type: string enum: [loaded, delegated] functions: type: array items: type: object properties: name: type: string description: type: string disabled: type: boolean parameters: type: array items: type: object properties: name: type: string type: type: string disabledExtras: type: array items: type: object properties: type: type: string enum: [S, F] name: type: string '401': description: Unauthorized '403': description: Insufficient access rights security: - BearerAuth: [] tags: - AI Management /v1/ai/disabled-items: post: operationId: addAiDisabledItem summary: Add item to AI disabled list description: >- Add a skill or function name to the stop list. The item does not need to correspond to a currently registered entity. Requires MANAGE_AI_SKILLS access right. requestBody: required: true content: application/json: schema: type: object required: [type, name] properties: type: type: string enum: [S, F] description: Item type - S for skill, F for function name: type: string description: Name of the skill or function to disable example: type: F name: some-function-name responses: '204': description: Item added to disabled list successfully '400': description: Invalid or missing type/name '401': description: Unauthorized '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Management /v1/ai/disabled-items/{item-type}/{item-name}: delete: operationId: removeAiDisabledItem summary: Remove item from AI disabled list description: >- Remove a skill or function name from the stop list. Requires MANAGE_AI_SKILLS access right. parameters: - name: item-type in: path required: true schema: type: string enum: [S, F] description: Item type - S for skill, F for function - name: item-name in: path required: true schema: type: string description: Name of the skill or function to re-enable responses: '204': description: Item removed from disabled list successfully '400': description: Invalid item type or name '401': description: Unauthorized '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Management /v1/ai/saved-prompts: get: operationId: listAiSavedPrompts summary: List saved prompts description: Retrieve all saved AI assistant prompts for the current user. responses: '200': description: List of saved prompts content: application/json: schema: type: array items: $ref: '#/components/schemas/AiSavedPrompt' '403': description: Insufficient access rights security: - BearerAuth: [] tags: - AI Saved Prompts post: operationId: createAiSavedPrompt summary: Create saved prompt description: Create a new saved AI assistant prompt for the current user. requestBody: required: true content: application/json: schema: type: object required: - name - promptText properties: name: type: string description: Display name for the saved prompt description: type: string description: Optional description promptText: type: string description: The prompt text responses: '201': description: Prompt created content: application/json: schema: $ref: '#/components/schemas/AiSavedPrompt' '400': description: Missing or invalid fields '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Saved Prompts /v1/ai/saved-prompts/{prompt-id}: get: operationId: getAiSavedPrompt summary: Get saved prompt details description: Retrieve a single saved AI assistant prompt by ID. parameters: - name: prompt-id in: path required: true schema: type: integer responses: '200': description: Saved prompt details content: application/json: schema: $ref: '#/components/schemas/AiSavedPrompt' '400': description: Invalid prompt ID '403': description: Insufficient access rights '404': description: Prompt not found security: - BearerAuth: [] tags: - AI Saved Prompts put: operationId: updateAiSavedPrompt summary: Update saved prompt description: Update an existing saved AI assistant prompt. parameters: - name: prompt-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object required: - name - promptText properties: name: type: string description: Display name for the saved prompt description: type: string description: Optional description promptText: type: string description: The prompt text responses: '200': description: Prompt updated content: application/json: schema: $ref: '#/components/schemas/AiSavedPrompt' '400': description: Missing or invalid fields '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Saved Prompts delete: operationId: deleteAiSavedPrompt summary: Delete saved prompt description: Delete a saved AI assistant prompt. parameters: - name: prompt-id in: path required: true schema: type: integer responses: '204': description: Prompt deleted '400': description: Invalid prompt ID '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Saved Prompts /v1/alarms: get: operationId: listAlarms summary: List Alarms description: Retrieve a list of alarms. parameters: - name: rootObject in: query schema: type: integer description: ID of root object for alarm retrieval (0 to retrieve all alarms) - name: includeObjectDetails in: query schema: type: boolean description: If true, include full source object details in response responses: '200': description: Successful retrieval of alarms. content: application/json: schema: type: array items: type: object properties: id: type: integer severity: type: integer state: type: integer source: type: integer message: type: string lastChangeTime: type: string format: date-time security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}: get: operationId: getAlarm summary: Get details of specific alarm parameters: - name: alarm-id in: path required: true schema: type: integer responses: '200': description: Details of given alarm '401': description: Unauthorized '403': description: User does not have read access to alarm or alarm's source object '404': description: Alarm with given ID does not exist security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}/acknowledge: post: operationId: acknowledgeAlarm summary: Acknowledge Alarm description: Acknowledge an alarm. parameters: - name: alarm-id in: path required: true schema: type: integer responses: '204': description: Successful acknowledgement of alarm. '401': description: Unauthorized '403': description: User does not have read access to alarm or alarm's source object '404': description: Alarm with given ID does not exist security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}/resolve: post: operationId: resolveAlarm summary: Resolve Alarm description: Resolve an alarm. parameters: - name: alarm-id in: path required: true schema: type: integer responses: '204': description: Successful resolve of alarm. '401': description: Unauthorized '403': description: User does not have read access to alarm or alarm's source object '404': description: Alarm with given ID does not exist security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}/terminate: post: operationId: terminateAlarm summary: Terminate Alarm description: Terminate an alarm. parameters: - name: alarm-id in: path required: true schema: type: integer responses: '204': description: Successful termination of alarm. '401': description: Unauthorized '403': description: User does not have read access to alarm or alarm's source object '404': description: Alarm with given ID does not exist security: - BearerAuth: [] tags: - Alarms /v1/connection-history: get: operationId: getConnectionHistory tags: - Find summary: Get connection history description: Query the connection history table for MAC address connection/disconnection events. Requires SYSTEM_ACCESS_SEARCH_NETWORK. parameters: - name: macAddress in: query required: false schema: type: string description: Filter by MAC address. - name: nodeId in: query required: false schema: type: integer description: Filter by node ID (matches switch_id or node_id). - name: switchId in: query required: false schema: type: integer description: Filter by switch ID. - name: interfaceId in: query required: false schema: type: integer description: Filter by interface ID. - name: from in: query required: false schema: type: integer description: Start of time range (unix timestamp). - name: to in: query required: false schema: type: integer description: End of time range (unix timestamp). - name: limit in: query required: false schema: type: integer default: 1000 maximum: 10000 description: Maximum number of records to return (default 1000, max 10000). responses: '200': description: Connection history records. content: application/json: schema: type: array items: type: object properties: recordId: type: integer format: int64 description: Record ID timestamp: type: integer description: Event timestamp (unix) macAddress: type: string description: MAC address ipAddress: type: string description: IP address nodeId: type: integer description: Node ID switchId: type: integer description: Switch ID interfaceId: type: integer description: Interface ID vlanId: type: integer description: VLAN ID eventType: type: integer description: Event type oldSwitchId: type: integer description: Previous switch ID oldInterfaceId: type: integer description: Previous interface ID '401': description: Unauthorized '403': description: User does not have SEARCH_NETWORK access security: - BearerAuth: [] /v1/find/mac-address: get: operationId: findMacAddress summary: Find MAC address parameters: - name: macAddress in: query required: true schema: type: string description: Mac address or it's first part for search. - name: searchLimit in: query required: false schema: type: integer description: Optional. Number of results to be returned, default is 100. - name: includeObjects in: query required: false schema: type: boolean description: Optional. If provided, object information is included in response. responses: '200': description: Successful search of MAC address. content: application/json: schema: type: array items: type: object properties: localMacAddress: type: string description: Local mac address localNodeId: type: integer description: Local node id localInterfaceId: type: integer description: Local interface ID localIpAddress: $ref: '#/components/schemas/InetAddress' type: type: string description: Connection type nodeId: type: integer description: Node or access point ID interfaceId: type: integer description: Interface ID interfaceIndex: type: integer description: Interface index '401': description: Unauthorized. security: - BearerAuth: [] tags: - Find /v1/geo-areas: get: operationId: listGeoAreas tags: - Geo Areas summary: Get all geo areas description: Retrieve the list of all configured geographic areas. responses: '200': description: List of geo areas. content: application/json: schema: type: array items: $ref: '#/components/schemas/GeoArea' '401': description: Unauthorized. security: - BearerAuth: [] post: operationId: createGeoArea tags: - Geo Areas summary: Create a new geo area description: Create a new geographic area. Requires MANAGE_GEO_AREAS system access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GeoAreaCreateUpdate' responses: '201': description: Geo area created successfully. content: application/json: schema: $ref: '#/components/schemas/GeoArea' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '500': description: Internal server error. security: - BearerAuth: [] /v1/geo-areas/{area-id}: get: operationId: getGeoArea tags: - Geo Areas summary: Get geo area details description: Retrieve details of a specific geographic area. parameters: - name: area-id in: path required: true schema: type: integer description: Geo area ID. responses: '200': description: Geo area details. content: application/json: schema: $ref: '#/components/schemas/GeoArea' '400': description: Invalid area ID. '401': description: Unauthorized. '404': description: Geo area not found. security: - BearerAuth: [] put: operationId: updateGeoArea tags: - Geo Areas summary: Update a geo area description: Update an existing geographic area. Requires MANAGE_GEO_AREAS system access right. parameters: - name: area-id in: path required: true schema: type: integer description: Geo area ID. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GeoAreaCreateUpdate' responses: '200': description: Geo area updated successfully. content: application/json: schema: $ref: '#/components/schemas/GeoArea' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '404': description: Geo area not found. '500': description: Internal server error. security: - BearerAuth: [] delete: operationId: deleteGeoArea tags: - Geo Areas summary: Delete a geo area description: Delete a geographic area. Requires MANAGE_GEO_AREAS system access right. Use force=true to delete even if the area is referenced by objects. parameters: - name: area-id in: path required: true schema: type: integer description: Geo area ID. - name: force in: query required: false schema: type: boolean description: Force deletion even if the area is referenced by objects. responses: '204': description: Geo area deleted successfully. '400': description: Invalid area ID. '401': description: Unauthorized. '403': description: Access denied. '404': description: Geo area not found. '409': description: Geo area is in use by one or more objects. '500': description: Internal server error. security: - BearerAuth: [] /v1/object-categories: get: operationId: listObjectCategories tags: - Object Categories summary: Get all object categories description: Retrieve the list of all configured object categories. responses: '200': description: List of object categories. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectCategory' '401': description: Unauthorized. security: - BearerAuth: [] post: operationId: createObjectCategory tags: - Object Categories summary: Create a new object category description: Create a new object category. Requires MANAGE_OBJECT_CATEGORIES system access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectCategoryCreateUpdate' responses: '201': description: Object category created successfully. content: application/json: schema: $ref: '#/components/schemas/ObjectCategory' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '500': description: Internal server error. security: - BearerAuth: [] /v1/object-categories/{category-id}: get: operationId: getObjectCategory tags: - Object Categories summary: Get object category details description: Retrieve details of a specific object category. parameters: - name: category-id in: path required: true schema: type: integer description: Object category ID. responses: '200': description: Object category details. content: application/json: schema: $ref: '#/components/schemas/ObjectCategory' '400': description: Invalid category ID. '401': description: Unauthorized. '404': description: Object category not found. security: - BearerAuth: [] put: operationId: updateObjectCategory tags: - Object Categories summary: Update an object category description: Update an existing object category. Requires MANAGE_OBJECT_CATEGORIES system access right. parameters: - name: category-id in: path required: true schema: type: integer description: Object category ID. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectCategoryCreateUpdate' responses: '200': description: Object category updated successfully. content: application/json: schema: $ref: '#/components/schemas/ObjectCategory' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '404': description: Object category not found. '500': description: Internal server error. security: - BearerAuth: [] delete: operationId: deleteObjectCategory tags: - Object Categories summary: Delete an object category description: Delete an object category. Requires MANAGE_OBJECT_CATEGORIES system access right. Use force=true to delete even if the category is assigned to objects (resets those objects to no category). parameters: - name: category-id in: path required: true schema: type: integer description: Object category ID. - name: force in: query required: false schema: type: boolean description: Force deletion even if the category is assigned to objects. responses: '204': description: Object category deleted successfully. '400': description: Invalid category ID. '401': description: Unauthorized. '403': description: Access denied. '404': description: Object category not found. '409': description: Object category is in use by one or more objects. '500': description: Internal server error. security: - BearerAuth: [] /v1/image-library: get: operationId: listImages tags: - Image Library summary: Get image library listing description: Retrieve list of all images in the library (metadata only). Optionally filter by category. parameters: - name: category in: query required: false schema: type: string description: Filter by image category name. responses: '200': description: List of images. content: application/json: schema: type: array items: $ref: '#/components/schemas/LibraryImage' '401': description: Unauthorized. security: - BearerAuth: [] /v1/image-library/{guid}: get: operationId: getImageMetadata tags: - Image Library summary: Get image metadata description: Retrieve metadata for a specific image in the library. parameters: - name: guid in: path required: true schema: type: string format: uuid description: Image GUID. responses: '200': description: Image metadata. content: application/json: schema: $ref: '#/components/schemas/LibraryImage' '400': description: Invalid GUID. '401': description: Unauthorized. '404': description: Image not found. security: - BearerAuth: [] /v1/image-library/{guid}/data: get: operationId: getImageData tags: - Image Library summary: Get image data description: Download the raw image binary data with correct Content-Type header. SVG images are served as image/svg+xml, raster images as their respective MIME type (image/png, image/jpeg, etc.). parameters: - name: guid in: path required: true schema: type: string format: uuid description: Image GUID. responses: '200': description: Image binary data. content: image/svg+xml: schema: type: string format: binary image/png: schema: type: string format: binary image/jpeg: schema: type: string format: binary '400': description: Invalid GUID. '401': description: Unauthorized. '404': description: Image not found. security: - BearerAuth: [] /v1/grafana/infinity/alarms: post: operationId: grafanaQueryAlarms summary: Retrieve alarms in format suitable for Grafana Infinity description: Retrieve alarms in format suitable for Grafana Infinity. requestBody: required: true content: application/json: schema: type: object properties: rootObjectId: type: integer description: Optional. ID of root object for alarm retrieval (0 to retrieve all alarms) responses: '200': description: Successful retrieval of alarms. content: application/json: schema: type: array items: $ref: '#/components/schemas/GrafanaAlarm' '401': description: Unauthorized. security: - BearerAuth: [] tags: - Grafana /v1/grafana/infinity/object-query: post: operationId: grafanaQueryObjects summary: Execute object query and return result in format suitable for Grafana Infinity description: Execute object query and return result in format suitable for Grafana Infinity. requestBody: required: true content: application/json: schema: type: object properties: rootObjectId: type: integer description: ID of root object for query execution queryId: type: integer description: ID of object query to be executed limit: type: integer description: Optional limit on number of retrieved objects. Limit is applied after ordering. inputFields: type: object description: User input fields (will be available in query script via global variable $INPUT). additionalProperties: type: string responses: '200': description: Successful retrieval of query results. content: application/json: schema: type: array items: type: object description: One row of result set with single object query result, fields depend on query definition '400': description: Query error '401': description: Unauthorized. security: - BearerAuth: [] tags: - Grafana /v1/grafana/infinity/summary-table: post: operationId: grafanaQuerySummaryTable summary: Retrieve summary table in format suitable for Grafana Infinity description: Retrieve summary table in format suitable for Grafana Infinity. requestBody: required: true content: application/json: schema: type: object properties: rootObjectId: type: integer description: ID of root object for summary table retrieval tableId: type: integer description: ID of summary table to be retrieved responses: '200': description: Successful retrieval of summary table. content: application/json: schema: type: array items: type: object description: One row of summary table, fields depend on table definition (First column is always object name) '401': description: Unauthorized. security: - BearerAuth: [] tags: - Grafana /v1/grafana/objects/{object-id}/dci-list: get: operationId: grafanaGetDciList summary: Get DCI list for Grafana description: Retrieve data collection items (DCIs) for a specific object formatted for Grafana. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID responses: '200': description: DCI list retrieved successfully content: application/json: schema: type: object properties: objects: type: array items: type: object properties: id: type: integer description: DCI ID name: type: string description: DCI description '400': description: Object is not data collection target '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Grafana /v1/grafana/objects-status: post: operationId: grafanaGetObjectsStatus summary: Get objects status for Grafana description: Retrieve status information for child objects of a root object formatted for Grafana. requestBody: required: true content: application/json: schema: type: object properties: rootObjectId: type: integer description: Root object ID to retrieve children status for required: - rootObjectId responses: '200': description: Objects status retrieved successfully content: application/json: schema: type: array items: type: object properties: Name: type: string description: Object name (may include alias in parentheses) Status: type: integer description: Object status '400': description: Invalid root object ID '401': description: Unauthorized '403': description: User does not have read access to root object '404': description: Root object with given ID does not exist security: - BearerAuth: [] tags: - Grafana /v1/grafana/object-list: get: operationId: grafanaGetObjectList summary: Get object list for Grafana description: Retrieve a list of objects formatted for Grafana with optional filtering. parameters: - name: filter in: query schema: type: string description: Filter type for objects (e.g., DataCollectionTarget, Summary, Alarm) responses: '200': description: Object list retrieved successfully content: application/json: schema: type: object properties: objects: type: array items: type: object properties: id: type: integer description: Object ID name: type: string description: Object name (may include alias) '401': description: Unauthorized security: - BearerAuth: [] tags: - Grafana /v1/grafana/summary-table-list: get: operationId: grafanaGetSummaryTableList summary: Get summary table list for Grafana description: Retrieve a list of available DCI summary tables formatted for Grafana. responses: '200': description: Summary table list retrieved successfully content: application/json: schema: type: object properties: objects: type: array items: type: object properties: id: type: integer description: Summary table ID name: type: string description: Summary table name '401': description: Unauthorized '403': description: User does not have required system access rights security: - BearerAuth: [] tags: - Grafana /v1/grafana/query-list: get: operationId: grafanaGetQueryList summary: Get object query list for Grafana description: Retrieve a list of available object queries formatted for Grafana. responses: '200': description: Object query list retrieved successfully content: application/json: schema: type: object properties: objects: type: array items: type: object properties: id: type: integer description: Query ID name: type: string description: Query name '401': description: Unauthorized '403': description: User does not have required system access rights security: - BearerAuth: [] tags: - Grafana /v1/login: post: operationId: login summary: User Login description: Authenticate a user and respond with a token. requestBody: required: true content: application/json: schema: type: object properties: username: type: string password: type: string method: type: string description: Choosen 2FA method. requestId: type: string description: Request ID provided by server in response to 2FA method selection. challenge: type: string description: 2FA challenge provided by server response: type: string description: 2FA response provided by client required: - username - password responses: '201': description: Successful login. content: application/json: schema: type: object properties: token: type: string description: Authentication token. userId: type: integer systemAccessRights: type: integer changePassword: type: boolean description: Indicates if password change is required for this user. graceLogins: type: integer description: Number of grace logins left if password change is required. '400': description: Bad Request - Invalid request body '401': description: Unauthorized. headers: WWW-Authenticate: description: Challenge "2FA" indicates that request should be repeated with one of provided 2FA methods. If method was provided, response will contain request ID and challenge. schema: type: string example: 2FA TOTP,Telegram '403': description: Forbidden content: application/json: schema: type: object properties: errorCode: type: integer description: Error code that can provide additional information on login failure reasons. security: [] tags: - Authentication /v1/logout: post: operationId: logout summary: User Logout description: Logout a user and invalidate their token. responses: '204': description: Successful logout. security: - BearerAuth: [] tags: - Authentication /v1/objects: get: operationId: listObjects summary: List objects description: Retrieve a list of objects (with optional filter). parameters: - name: filter in: query schema: type: string description: Optional filter string. If provided, only objects with name or alias containing given string will be returned. - name: parent in: query schema: type: integer description: Optional parent object ID. If provided, only child objects of given parent object will be returned, otherwise all top-level objects will be returned. responses: '200': description: Successful retrieval of objects. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectSummary' '401': description: Unauthorized. security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}: get: operationId: getObject summary: Get object details description: Retrieve specific object details. Contains data for object overview, alarms, and last values. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Successful retrieval of object details. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/execute-agent-command: post: operationId: executeAgentCommand summary: Execute command on agent parameters: - name: object-id in: path required: true schema: type: integer responses: '201': description: Command executed successfully '401': description: Unauthorized '403': description: User does not have control access to given object '404': description: Object with given ID does not exist '500': description: Command execution failed content: application/json: schema: type: array items: type: object properties: reason: type: string description: Failure reason agentErrorCode: type: integer description: Error code returned by agent (if applicable) agentErrorText: type: string description: Textual description of agent error code (if applicable) security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/execute-dashboard-script: post: operationId: executeDashboardScript summary: Execute dashboard element script within context of given object description: Execute an NXSL script embedded in a dashboard element against a context object and return the result as a string map. parameters: - name: object-id in: path required: true schema: type: integer description: Dashboard or dashboard template object ID requestBody: required: true content: application/json: schema: type: object required: - objectId - elementIndex properties: objectId: type: integer description: Context object ID for script execution elementIndex: type: integer description: Index of the dashboard element containing the script responses: '200': description: Script executed successfully content: application/json: schema: type: object properties: result: type: object additionalProperties: type: string description: Map of string key-value pairs with script execution results '400': description: Invalid arguments or script compilation error content: application/json: schema: type: object properties: diagnostic: type: object description: Additional diagnostic information, if available reason: type: string description: Failure reason '401': description: Unauthorized '403': description: User does not have read access to the dashboard or context object '404': description: Dashboard or context object with given ID does not exist '500': description: Script execution failed content: application/json: schema: type: object properties: diagnostic: type: object description: Additional diagnostic information, if available reason: type: string description: Failure reason security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/execute-script: post: operationId: executeScript summary: Execute script within context of given object parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object properties: parameters: type: array description: Optional list of parameters to be passed to the script items: type: string description: Single parameter entry resultAsMap: type: boolean description: If true, result will always be presented as a map (JSON object) script: type: string description: Source code of the script responses: '200': description: Script executed successfully '400': description: Invalid arguments '401': description: Unauthorized '403': description: User does not have control access to given object '404': description: Object with given ID does not exist '500': description: Script execution failed content: application/json: schema: type: object properties: diagnostic: type: object description: Additional diagnostic information, if available reason: type: string description: Failure reason security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/data-collection/current-values: get: operationId: getDciCurrentValues summary: Get current DCI values description: Retrieve current values for all data collection items (DCIs) of a given object. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID responses: '200': description: Current DCI values retrieved successfully content: application/json: schema: type: object properties: objectId: type: integer description: Object ID objectName: type: string description: Object name values: type: array items: $ref: '#/components/schemas/DCIValue' '400': description: Object is not data collection target '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Data Collection /v1/objects/{object-id}/data-collection/{dci-id}/history: get: operationId: getDciHistory summary: Get data collection history description: Retrieve historical data for a specific DCI (Data Collection Item). parameters: - name: object-id in: path required: true schema: type: integer description: Object ID - name: dci-id in: path required: true schema: type: integer description: DCI (Data Collection Item) ID - name: timeFrom in: query schema: type: integer description: Start time for data retrieval (Unix timestamp) - name: timeTo in: query schema: type: integer description: End time for data retrieval (Unix timestamp) - name: maxRows in: query schema: type: integer description: Maximum number of data points to return - name: historicalDataType in: query schema: type: integer description: Type of historical data (0=raw, 1=processed, 2=full table, 3=raw and processed) responses: '200': description: Data collection history retrieved successfully content: application/json: schema: type: object properties: description: type: string description: DCI description unitName: type: string description: Unit name for the value values: type: array items: type: object properties: timestamp: type: string format: date-time value: type: string description: Data value '400': description: Object is not data collection target or DCI type not supported '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object or DCI with given ID does not exist '500': description: Database failure security: - BearerAuth: [] tags: - Data Collection /v1/objects/{object-id}/data-collection/performance-view: get: operationId: getDciPerformanceView summary: Get performance view DCIs description: Retrieve data collection items configured for the performance view tab, including parsed chart configuration settings. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID responses: '200': description: Performance view DCIs retrieved successfully content: application/json: schema: type: object properties: dcis: type: array items: type: object properties: id: type: integer description: DCI ID name: type: string description: DCI name description: type: string description: DCI description instance: type: string description: Instance value instanceName: type: string description: Instance display name dataType: type: integer description: Data type (0=integer, 1=unsigned integer, 2=int64, 3=unsigned int64, 4=string, 5=float, 6=null, 7=counter32, 8=counter64) templateDciId: type: integer description: Template DCI ID (0 if not from template) rootTemplateDciId: type: integer description: Root template DCI ID for instance discovery chartConfig: type: object description: Chart configuration parsed from perfTabSettings XML properties: enabled: type: boolean type: type: integer description: Chart type title: type: string name: type: string description: Legend name groupName: type: string nullable: true description: Chart group name order: type: integer description: Display order within group color: type: string description: Line color (e.g. "0x00C000") automaticColor: type: boolean autoScale: type: boolean minYScaleValue: type: number maxYScaleValue: type: number logScaleEnabled: type: boolean stacked: type: boolean showLegendAlways: type: boolean extendedLegend: type: boolean useMultipliers: type: boolean showThresholds: type: boolean timeRange: type: integer timeUnits: type: integer description: Time units (0=minutes, 1=hours, 2=days) yAxisLabel: type: string invertedValues: type: boolean translucent: type: boolean modifyYBase: type: boolean parentDciId: type: integer '400': description: Object is not data collection target '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Data Collection /v1/objects/{object-id}/expand-text: post: operationId: expandText summary: Expand text macros description: Expand text containing NetXMS macros in the context of a given object. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID requestBody: required: true content: application/json: schema: type: object required: - text properties: text: type: string description: Text containing macros to expand alarmId: type: integer description: Optional alarm ID for alarm-related macro expansion inputFields: type: object description: Optional key-value pairs for custom macro substitution additionalProperties: type: string responses: '200': description: Text expanded successfully content: application/json: schema: type: object properties: expandedText: type: string description: Text with all macros expanded '400': description: Invalid request or missing text parameter '401': description: Unauthorized '403': description: User does not have read access to given object or alarm '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/remote-control: post: operationId: createRemoteControlSession summary: Create Remote Control Session description: | Create a remote control (VNC) session for a node and return a short-lived token for WebSocket connection. This is a convenience endpoint that automatically determines VNC connection parameters based on the node's configuration. The endpoint uses the node's configured VNC port and proxy settings to establish a TCP tunnel. The returned token should be used to connect to the WebSocket endpoint `/v1/tcp-proxy/{token}`. **Two-Phase Authorization Flow:** 1. Call this endpoint with Bearer token authentication 2. Server establishes VNC tunnel via agent and returns a session token 3. Connect to `/v1/tcp-proxy/{token}` WebSocket endpoint (no auth header needed) **Required Permissions:** - System access right: SYSTEM_ACCESS_SETUP_TCP_PROXY - Object access rights: OBJECT_ACCESS_READ and OBJECT_ACCESS_CONTROL on the node tags: - Objects - TCP Proxy parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID requestBody: required: true content: application/json: schema: type: object properties: allowControlMessages: type: boolean description: If true, server will send JSON control messages in text frames (default is false) responses: '201': description: Remote control session created successfully. content: application/json: schema: type: object properties: token: type: string format: uuid description: Session token for WebSocket connection expiresIn: type: integer description: Token validity period in seconds wsUrl: type: string description: WebSocket URL path to connect to example: token: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" expiresIn: 30 wsUrl: "/v1/tcp-proxy/a1b2c3d4-e5f6-7890-abcd-ef1234567890" '400': description: | Bad Request - Object is not a node or VNC port not configured. '401': description: Unauthorized - Authentication token missing or invalid '403': description: | Forbidden - User does not have required permissions. Either SYSTEM_ACCESS_SETUP_TCP_PROXY, OBJECT_ACCESS_READ, or OBJECT_ACCESS_CONTROL is missing. '404': description: Object not found - Invalid object ID '502': description: | Bad Gateway - Cannot establish connection to agent. Agent may be unreachable or TCP proxy setup failed. '503': description: Service Unavailable - No proxy node available security: - BearerAuth: [] /v1/objects/{object-id}/set-maintenance: post: operationId: setObjectMaintenance summary: Make object enter or leave maintenance mode parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object properties: maintenance: type: boolean description: true - if object should enter maintenance mode, false - if leave comments: type: string description: Optional maintenance comments responses: '200': description: Maintenance mode changed successfully '400': description: Invalid arguments '401': description: Unauthorized '403': description: User does not have control access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/set-managed: post: operationId: setObjectManaged summary: Manage or unmanage object parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object properties: managed: type: boolean description: true - for manage object, false - for object unmanage responses: '200': description: Object successfully managed/unmanaged '400': description: Invalid arguments '401': description: Unauthorized '403': description: User does not have control access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/take-screenshot: get: operationId: takeScreenshot summary: Take screenshot from remote system via NetXMS agent parameters: - name: object-id in: path required: true schema: type: integer - name: sessionName description: Session name to take screenshot from. If not provided screenshot will be taken from console session. in: query required: false schema: type: string responses: '200': description: Screenshot successfully taken. content: image/png: schema: type: string '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist '500': description: Server side error (common reason is failed communication to agent). Response document may contain detailed failure reason. security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/topology/l2: get: operationId: getL2Topology summary: Get L2 (link layer) topology description: Build an ad-hoc Layer 2 topology map centered on the given node. Returns the set of discovered objects and the links between them. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID - name: radius in: query required: false schema: type: integer default: 0 description: Discovery radius (number of hops from the root node). 0 means server default. - name: useL1Topology in: query required: false schema: type: boolean default: false description: Include physical (L1) topology information responses: '200': description: L2 topology retrieved successfully content: application/json: schema: $ref: '#/components/schemas/TopologyMap' '400': description: Invalid object ID or object is not a node '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist '500': description: Unable to build L2 topology security: - BearerAuth: [] /v1/objects/{object-id}/topology/ip: get: operationId: getIpTopology summary: Get IP topology description: Build an ad-hoc IP topology map centered on the given node. Returns routers and subnets connected to the node. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID - name: radius in: query required: false schema: type: integer default: 0 description: Discovery radius (number of hops from the root node). 0 means server default. responses: '200': description: IP topology retrieved successfully content: application/json: schema: $ref: '#/components/schemas/TopologyMap' '400': description: Invalid object ID or object is not a node '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] /v1/objects/{object-id}/topology/ospf: get: operationId: getOspfTopology summary: Get OSPF topology description: Build an ad-hoc OSPF topology map centered on the given node. Returns the OSPF routing domain topology. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID responses: '200': description: OSPF topology retrieved successfully content: application/json: schema: $ref: '#/components/schemas/TopologyMap' '400': description: Invalid object ID or object is not a node '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist '500': description: Unable to build OSPF topology security: - BearerAuth: [] /v1/objects/{object-id}/topology/internal: get: operationId: getInternalTopology summary: Get internal communication topology description: Build an ad-hoc internal communication topology map for the given object. Shows proxy relationships and agent tunnels. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Data collection target object ID responses: '200': description: Internal communication topology retrieved successfully content: application/json: schema: $ref: '#/components/schemas/TopologyMap' '400': description: Invalid object ID or object is not a data collection target '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist '500': description: Unable to build internal communication topology security: - BearerAuth: [] /v1/objects/{object-id}/status-explanation: get: operationId: getObjectStatusExplanation summary: Get object status explanation description: Retrieve a detailed explanation of how the object's status was calculated, including the algorithm used, child object statuses, and status propagation details. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID responses: '200': description: Status explanation retrieved successfully content: application/json: schema: type: object properties: objectId: type: integer description: Object ID objectName: type: string description: Object name status: type: integer description: Current object status statusText: type: string description: Human-readable status name unmanaged: type: boolean description: Present and true if object is unmanaged algorithm: type: string description: Status calculation algorithm name childStatuses: type: array description: Status information for child objects items: type: object properties: objectId: type: integer objectName: type: string status: type: integer statusText: type: string '400': description: Invalid object ID '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/sub-tree: get: operationId: getObjectSubTree summary: Get object sub-tree description: Retrieve a sub-tree of objects starting from the specified parent object. parameters: - name: object-id in: path required: true schema: type: integer description: Parent object ID - name: filter in: query schema: type: string description: Optional filter string. If provided, only objects with name or alias containing given string will be returned. responses: '200': description: Object sub-tree retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectSummary' '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/object-tools: get: operationId: listObjectToolsForObject summary: List object tools applicable to an object description: Retrieve a list of object tools that are applicable to the specified object, filtered by tool ACL, container context, disabled status, and the tool's menu filter (SNMP/agent requirements, OID match, OS match, template match, custom attribute match). parameters: - name: object-id in: path required: true schema: type: integer description: Object ID to filter tools for - name: types in: query required: false schema: type: string description: Comma-separated list of tool types to filter by. Uses kebab-case format (e.g., "action,server-script,ssh-command") responses: '200': description: Successful retrieval of applicable object tools. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectToolSummary' '400': description: Invalid object ID. '403': description: User does not have read access to the object. '404': description: Object with given ID does not exist. '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools /v1/objects/query: post: operationId: queryObjects summary: Execute object query description: Execute object query (specialized NXSL script) and return all matching objects along with additional data fields. requestBody: required: true content: application/json: schema: type: object properties: fields: type: array description: List of additional fields to be retrieved. items: type: string inputFields: type: array description: List of user input fields (will be available in query script via global variable $INPUT). items: type: object additionalProperties: type: string description: Set of key-value pairs where key is input field name and value is actual value provided by user. limit: type: integer description: Optional limit on number of retrieved objects. Limit is applied after ordering. orderBy: type: array description: List of object attributes to be used for ordering result. items: type: string query: type: string description: Object query script example: type == NODE responses: '200': description: Query successfully executed. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectQueryResult' '401': description: Unauthorized. security: - BearerAuth: [] tags: - Objects /v1/objects/search: post: operationId: searchObjects summary: Search objects description: Search for objects matching certain criteria. Multiple criterias will be combined with logical AND. requestBody: required: true content: application/json: schema: type: object properties: class: type: array items: $ref: '#/components/schemas/ObjectClass' ipAddress: type: string format: ip-address description: IP address filter string. If provided, only objects with matching primary IP address will be returned. name: type: string description: Name filter string. If provided, only objects with name or alias containing given string will be returned. parent: type: integer description: Parent object ID. If provided, only child objects (both direct and indirect) of given parent object will be returned. zoneUIN: type: integer description: Zone UIN. If provided, only objects within given zone will be returned. responses: '200': description: Successful retrieval of objects. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectSummary' '401': description: Unauthorized. security: - BearerAuth: [] tags: - Objects /v1/scheduled-task-handlers: get: operationId: listScheduledTaskHandlers summary: List available task handlers description: Retrieve a list of registered scheduled task handler names accessible to the current user. responses: '200': description: Handler list retrieved successfully content: application/json: schema: type: array items: type: string '401': description: Unauthorized '403': description: User does not have any scheduled task access rights security: - BearerAuth: [] tags: - Scheduled Tasks /v1/scheduled-tasks: get: operationId: listScheduledTasks summary: List all accessible scheduled tasks description: Retrieve all scheduled tasks accessible to the current user based on system access rights. responses: '200': description: Task list retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ScheduledTask' '401': description: Unauthorized '403': description: User does not have any scheduled task access rights security: - BearerAuth: [] tags: - Scheduled Tasks post: operationId: createScheduledTask summary: Create a new scheduled task description: Create a recurrent (cron-based) or one-time scheduled task. Provide `schedule` for recurrent tasks or `executionTime` for one-time tasks. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScheduledTaskCreateUpdate' responses: '201': description: Task created successfully '400': description: Invalid request body or missing required fields '401': description: Unauthorized '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - Scheduled Tasks /v1/scheduled-tasks/{task-id}: get: operationId: getScheduledTask summary: Get scheduled task details description: Retrieve details of a specific scheduled task by ID. parameters: - name: task-id in: path required: true schema: type: integer format: int64 responses: '200': description: Task details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ScheduledTask' '400': description: Invalid task ID '401': description: Unauthorized '403': description: Insufficient access rights '404': description: Task not found or not accessible security: - BearerAuth: [] tags: - Scheduled Tasks put: operationId: updateScheduledTask summary: Update a scheduled task description: Update an existing scheduled task. Provide `schedule` for recurrent tasks or `executionTime` for one-time tasks. parameters: - name: task-id in: path required: true schema: type: integer format: int64 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScheduledTaskCreateUpdate' responses: '200': description: Task updated successfully content: application/json: schema: $ref: '#/components/schemas/ScheduledTask' '400': description: Invalid request body or missing required fields '401': description: Unauthorized '403': description: Insufficient access rights '404': description: Task not found '500': description: Database failure security: - BearerAuth: [] tags: - Scheduled Tasks delete: operationId: deleteScheduledTask summary: Delete a scheduled task description: Delete a scheduled task by ID. parameters: - name: task-id in: path required: true schema: type: integer format: int64 responses: '204': description: Task deleted successfully '400': description: Invalid task ID '401': description: Unauthorized '403': description: Insufficient access rights '404': description: Task not found '500': description: Database failure security: - BearerAuth: [] tags: - Scheduled Tasks /v1/script-library: get: operationId: listScripts summary: List all scripts description: Retrieve a list of all scripts in the script library (ID and name only). responses: '200': description: Script list retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ScriptSummary' '401': description: Unauthorized '403': description: User does not have SYSTEM_ACCESS_MANAGE_SCRIPTS permission security: - BearerAuth: [] tags: - Script Library post: operationId: createScript summary: Create new script description: Create a new script in the script library. requestBody: required: true content: application/json: schema: type: object required: - name - code properties: name: type: string description: Script name (alphanumeric, underscore, colon; must not start with digit or colon) code: type: string description: NXSL source code responses: '201': description: Script created successfully content: application/json: schema: type: object properties: id: type: integer description: ID of the newly created script '400': description: Missing or invalid name/code, or invalid script name format '401': description: Unauthorized '403': description: User does not have SYSTEM_ACCESS_MANAGE_SCRIPTS permission '500': description: Database failure security: - BearerAuth: [] tags: - Script Library /v1/script-library/{script-id}: get: operationId: getScript summary: Get script details description: Retrieve a script with its full source code. parameters: - name: script-id in: path required: true schema: type: integer description: Script ID responses: '200': description: Script details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ScriptDetails' '400': description: Invalid script ID '401': description: Unauthorized '403': description: User does not have SYSTEM_ACCESS_MANAGE_SCRIPTS permission '404': description: Script with given ID does not exist security: - BearerAuth: [] tags: - Script Library put: operationId: updateScript summary: Update script description: Update an existing script's name and/or code. parameters: - name: script-id in: path required: true schema: type: integer description: Script ID requestBody: required: true content: application/json: schema: type: object required: - name - code properties: name: type: string description: Script name (alphanumeric, underscore, colon; must not start with digit or colon) code: type: string description: NXSL source code responses: '200': description: Script updated successfully content: application/json: schema: type: object properties: id: type: integer description: ID of the updated script '400': description: Missing or invalid name/code, or invalid script name format '401': description: Unauthorized '403': description: User does not have SYSTEM_ACCESS_MANAGE_SCRIPTS permission '404': description: Script with given ID does not exist '500': description: Database failure security: - BearerAuth: [] tags: - Script Library delete: operationId: deleteScript summary: Delete script description: Delete a script from the script library. parameters: - name: script-id in: path required: true schema: type: integer description: Script ID responses: '204': description: Script deleted successfully '400': description: Invalid script ID '401': description: Unauthorized '403': description: User does not have SYSTEM_ACCESS_MANAGE_SCRIPTS permission '404': description: Script with given ID does not exist '500': description: Database failure security: - BearerAuth: [] tags: - Script Library /v1/notification-channels: get: operationId: listNotificationChannels summary: List notification channels description: Retrieve a list of all notification channels configured on the server. responses: '200': description: Notification channels retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/NotificationChannel' '403': description: Access denied security: - BearerAuth: [] tags: - Notification Channels post: operationId: createNotificationChannel summary: Create a notification channel description: Create a new notification channel with the specified driver and configuration. requestBody: required: true content: application/json: schema: type: object required: - name - driverName properties: name: type: string description: Unique channel name description: type: string description: Channel description driverName: type: string description: Notification driver name configuration: type: string description: Driver-specific configuration (XML or NXSL script) responses: '201': description: Notification channel created successfully content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' '400': description: Invalid or missing required fields '403': description: Access denied '409': description: Channel with this name already exists security: - BearerAuth: [] tags: - Notification Channels /v1/notification-channels/{channel-name}: get: operationId: getNotificationChannel summary: Get notification channel details description: Retrieve details of a specific notification channel. parameters: - name: channel-name in: path required: true schema: type: string description: Channel name responses: '200': description: Notification channel details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' '403': description: Access denied '404': description: Notification channel not found security: - BearerAuth: [] tags: - Notification Channels put: operationId: updateNotificationChannel summary: Update a notification channel description: Update an existing notification channel. Only provided fields are updated. parameters: - name: channel-name in: path required: true schema: type: string description: Channel name requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: Channel description driverName: type: string description: Notification driver name configuration: type: string description: Driver-specific configuration (XML or NXSL script) responses: '200': description: Notification channel updated successfully content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' '400': description: Invalid request '403': description: Access denied '404': description: Notification channel not found security: - BearerAuth: [] tags: - Notification Channels delete: operationId: deleteNotificationChannel summary: Delete a notification channel description: Delete a notification channel. Fails if the channel is used in server actions. parameters: - name: channel-name in: path required: true schema: type: string description: Channel name responses: '204': description: Notification channel deleted successfully '403': description: Access denied '404': description: Notification channel not found '409': description: Channel is used in server actions security: - BearerAuth: [] tags: - Notification Channels /v1/notification-channels/{channel-name}/rename: post: operationId: renameNotificationChannel summary: Rename a notification channel description: Rename an existing notification channel. Also updates references in server actions. parameters: - name: channel-name in: path required: true schema: type: string description: Current channel name requestBody: required: true content: application/json: schema: type: object required: - newName properties: newName: type: string description: New channel name responses: '200': description: Notification channel renamed successfully '400': description: Invalid or missing new name '403': description: Access denied '404': description: Notification channel not found '409': description: Channel with the new name already exists security: - BearerAuth: [] tags: - Notification Channels /v1/notification-channels/{channel-name}/clear-queue: post: operationId: clearNotificationChannelQueue summary: Clear notification channel queue description: Clear all pending messages in the notification channel's queue. parameters: - name: channel-name in: path required: true schema: type: string description: Channel name responses: '204': description: Queue cleared successfully '403': description: Access denied '404': description: Notification channel not found security: - BearerAuth: [] tags: - Notification Channels /v1/notification-channels/{channel-name}/send: post: operationId: sendNotification summary: Send a notification description: Send a test notification message through the specified channel. parameters: - name: channel-name in: path required: true schema: type: string description: Channel name requestBody: required: true content: application/json: schema: type: object required: - recipient - body properties: recipient: type: string description: Message recipient subject: type: string description: Message subject body: type: string description: Message body responses: '204': description: Notification queued for sending '400': description: Invalid or missing required fields '403': description: Access denied '404': description: Notification channel not found security: - BearerAuth: [] tags: - Notification Channels /v1/notification-drivers: get: operationId: listNotificationDrivers summary: List notification drivers description: Retrieve a list of all loaded notification channel driver names. responses: '200': description: Notification drivers retrieved successfully content: application/json: schema: type: array items: type: string '403': description: Access denied security: - BearerAuth: [] tags: - Notification Channels /v1/ssh-keys: get: operationId: listSshKeys summary: List SSH keys description: Retrieve a list of all SSH keys. Optionally include public key data. parameters: - name: includePublicKey in: query required: false schema: type: boolean description: Include public key data in the response responses: '200': description: SSH keys retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/SshKey' '401': description: Unauthorized security: - BearerAuth: [] tags: - SSH Keys post: operationId: createSshKey summary: Create SSH key description: | Create a new SSH key. If only a name is provided, a new RSA key pair is generated. If publicKey and privateKey fields are also provided, the key pair is imported. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SshKeyCreate' responses: '201': description: SSH key created successfully content: application/json: schema: $ref: '#/components/schemas/SshKey' '400': description: Invalid request '401': description: Unauthorized '403': description: User does not have SSH key configuration access rights security: - BearerAuth: [] tags: - SSH Keys /v1/ssh-keys/{key-id}: get: operationId: getSshKey summary: Get SSH key details description: Retrieve details of a specific SSH key including its public key. parameters: - name: key-id in: path required: true schema: type: integer description: SSH key ID responses: '200': description: SSH key details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SshKey' '400': description: Invalid key ID '401': description: Unauthorized '404': description: SSH key not found security: - BearerAuth: [] tags: - SSH Keys put: operationId: updateSshKey summary: Update SSH key description: Update an existing SSH key's name and optionally its key data. parameters: - name: key-id in: path required: true schema: type: integer description: SSH key ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SshKeyUpdate' responses: '200': description: SSH key updated successfully content: application/json: schema: $ref: '#/components/schemas/SshKey' '400': description: Invalid request '401': description: Unauthorized '403': description: User does not have SSH key configuration access rights '404': description: SSH key not found security: - BearerAuth: [] tags: - SSH Keys delete: operationId: deleteSshKey summary: Delete SSH key description: | Delete an SSH key. If the key is in use by nodes, returns 409 with the list of node IDs. Use force=true to delete the key even if it is in use. parameters: - name: key-id in: path required: true schema: type: integer description: SSH key ID - name: force in: query required: false schema: type: boolean description: Force delete even if the key is in use by nodes responses: '204': description: SSH key deleted successfully '400': description: Invalid key ID '401': description: Unauthorized '403': description: User does not have SSH key configuration access rights '404': description: SSH key not found '409': description: SSH key is in use content: application/json: schema: $ref: '#/components/schemas/SshKeyInUse' security: - BearerAuth: [] tags: - SSH Keys /v1/web-service-definitions: get: operationId: listWebServiceDefinitions summary: List web service definitions description: Retrieve a list of all web service definitions. responses: '200': description: Web service definitions retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/WebServiceDefinition' '401': description: Unauthorized '403': description: User does not have web service definitions access rights security: - BearerAuth: [] tags: - Web Service Definitions post: operationId: createWebServiceDefinition summary: Create web service definition description: Create a new web service definition. Name and URL are required. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebServiceDefinitionCreate' responses: '201': description: Web service definition created successfully content: application/json: schema: $ref: '#/components/schemas/WebServiceDefinition' '400': description: Invalid request (missing name or url) '401': description: Unauthorized '403': description: User does not have web service definitions access rights '409': description: Web service definition with this name already exists security: - BearerAuth: [] tags: - Web Service Definitions /v1/web-service-definitions/{definition-id}: get: operationId: getWebServiceDefinition summary: Get web service definition details description: Retrieve details of a specific web service definition. parameters: - name: definition-id in: path required: true schema: type: integer description: Web service definition ID responses: '200': description: Web service definition details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/WebServiceDefinition' '400': description: Invalid definition ID '401': description: Unauthorized '403': description: User does not have web service definitions access rights '404': description: Web service definition not found security: - BearerAuth: [] tags: - Web Service Definitions put: operationId: updateWebServiceDefinition summary: Update web service definition description: Update an existing web service definition. parameters: - name: definition-id in: path required: true schema: type: integer description: Web service definition ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebServiceDefinitionCreate' responses: '200': description: Web service definition updated successfully content: application/json: schema: $ref: '#/components/schemas/WebServiceDefinition' '400': description: Invalid request '401': description: Unauthorized '403': description: User does not have web service definitions access rights '404': description: Web service definition not found '409': description: Web service definition with this name already exists security: - BearerAuth: [] tags: - Web Service Definitions delete: operationId: deleteWebServiceDefinition summary: Delete web service definition description: Delete a web service definition. parameters: - name: definition-id in: path required: true schema: type: integer description: Web service definition ID responses: '204': description: Web service definition deleted successfully '400': description: Invalid definition ID '401': description: Unauthorized '403': description: User does not have web service definitions access rights '404': description: Web service definition not found security: - BearerAuth: [] tags: - Web Service Definitions /v1/server-actions: get: operationId: listServerActions summary: List server actions description: Retrieve a list of all server actions defined in the system. responses: '200': description: Server actions retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ServerAction' '401': description: Unauthorized '403': description: User does not have MANAGE_ACTIONS or EPP access rights security: - BearerAuth: [] tags: - Server Actions post: operationId: createServerAction summary: Create server action description: | Create a new server action. Only the name field is required. Additional fields (type, data, etc.) can optionally be included to configure the action immediately after creation. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServerActionCreate' example: name: "Send email notification" responses: '201': description: Server action created successfully content: application/json: schema: $ref: '#/components/schemas/ServerAction' '400': description: Missing or invalid name field '401': description: Unauthorized '403': description: User does not have MANAGE_ACTIONS access right '409': description: Action with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Server Actions /v1/server-actions/{action-id}: get: operationId: getServerAction summary: Get server action details description: Retrieve details of a specific server action by its ID. parameters: - name: action-id in: path required: true schema: type: integer description: Action ID responses: '200': description: Server action retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ServerAction' '400': description: Invalid action ID '401': description: Unauthorized '403': description: User does not have MANAGE_ACTIONS or EPP access rights '404': description: Server action not found security: - BearerAuth: [] tags: - Server Actions put: operationId: updateServerAction summary: Update server action description: Update an existing server action. Only the fields provided in the request body will be modified. parameters: - name: action-id in: path required: true schema: type: integer description: Action ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServerActionUpdate' responses: '200': description: Server action updated successfully content: application/json: schema: $ref: '#/components/schemas/ServerAction' '400': description: Invalid action ID '401': description: Unauthorized '403': description: User does not have MANAGE_ACTIONS access right '404': description: Server action not found '409': description: Action with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Server Actions delete: operationId: deleteServerAction summary: Delete server action description: | Delete a server action. The action cannot be deleted if it is currently used in any event processing policy rule. parameters: - name: action-id in: path required: true schema: type: integer description: Action ID responses: '204': description: Server action deleted successfully '400': description: Invalid action ID '401': description: Unauthorized '403': description: User does not have MANAGE_ACTIONS access right '404': description: Server action not found '409': description: Action is used in event processing policy '500': description: Database failure security: - BearerAuth: [] tags: - Server Actions /v1/object-tools: get: operationId: listObjectTools summary: List available object tools description: Retrieve a list of object tools with basic information. parameters: - name: types in: query required: false schema: type: string description: Comma-separated list of tool types to filter by. Uses kebab-case format (e.g., "action,command,server-script,agent-list,file-download") responses: '200': description: Successful retrieval of object tools. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectToolSummary' '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools /v1/object-tools/{tool-id}: get: operationId: getObjectTool summary: Get object tool details description: Retrieve full details of a specific object tool. parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID responses: '200': description: Successful retrieval of object tool details. content: application/json: schema: $ref: '#/components/schemas/ObjectToolDetails' '400': description: Invalid tool ID. '403': description: Access denied. '404': description: Tool not found. '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools /v1/object-tools/{tool-id}/execute: post: operationId: executeObjectTool summary: Execute an object tool description: | Execute a server-capable object tool on the specified object. Supported tool types: action (agent action), server-command, server-script, snmp-table, agent-table, agent-list, ssh-command, url. Client-only tool types (internal, command, file-download) are rejected with 400. tags: - Object Tools parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID requestBody: required: true content: application/json: schema: type: object required: - objectId properties: objectId: type: integer description: ID of the target object to execute the tool on alarmId: type: integer description: Optional alarm ID for macro expansion context default: 0 inputFields: type: object additionalProperties: type: string description: Optional input field values for macro expansion stream: type: boolean description: | If true and the tool generates output, execution starts asynchronously and a WebSocket token is returned for streaming output. Supported for tool types: action, server-command, server-script, ssh-command. default: false responses: '200': description: Tool executed successfully (synchronous mode) content: application/json: schema: oneOf: - $ref: '#/components/schemas/ObjectToolTextResult' - $ref: '#/components/schemas/ObjectToolTableResult' - $ref: '#/components/schemas/ObjectToolNoResult' - $ref: '#/components/schemas/ObjectToolUrlResult' discriminator: propertyName: type mapping: text: '#/components/schemas/ObjectToolTextResult' table: '#/components/schemas/ObjectToolTableResult' none: '#/components/schemas/ObjectToolNoResult' url: '#/components/schemas/ObjectToolUrlResult' '202': description: | Tool execution started in streaming mode. Connect to the returned WebSocket URL to receive output in real-time. content: application/json: schema: $ref: '#/components/schemas/ObjectToolStreamingResult' '400': description: | Invalid request. Possible reasons: - Invalid or missing tool-id - Missing or invalid objectId - Tool type is client-only (internal, command, file-download) - Tool is disabled - Incompatible object class for the tool type - Object is not a node (for tools requiring a node target) '403': description: | Access denied. Possible reasons: - User does not have access to the tool (tool ACL) - User does not have OBJECT_ACCESS_CONTROL on the target object - User does not have access to the specified alarm '404': description: | Not found. Possible reasons: - Object tool with the given ID does not exist - Target object with the given objectId does not exist - Script not found in library (for server-script tools) '500': description: | Execution failed. Possible reasons: - Database failure loading tool metadata - Cannot connect to agent - Command execution failed - Script execution failed - Table tool execution failed - SSH proxy not available '504': description: Server command execution timed out. security: - BearerAuth: [] /v1/object-tools/output/{token}: get: operationId: connectObjectToolOutput summary: Connect to tool output stream (WebSocket) description: | WebSocket endpoint for receiving streaming output from an object tool execution. The token is obtained from POST /v1/object-tools/{tool-id}/execute with stream=true. Token is single-use and expires after 30 seconds. Server sends JSON text frames: - `{"type":"output","data":"..."}` - output chunk - `{"type":"result","data":"..."}` - script return value (server-script tools only) - `{"type":"completed"}` - execution finished successfully - `{"type":"error","message":"..."}` - execution failed tags: - Object Tools parameters: - name: token in: path required: true schema: type: string format: uuid description: Single-use token from the streaming execute response responses: '101': description: Switching protocols to WebSocket /v1/event-templates: get: operationId: listEventTemplates summary: List event templates description: Retrieve a list of all event templates defined in the system. responses: '200': description: Event templates retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/EventTemplate' '401': description: Unauthorized '403': description: User does not have VIEW_EVENT_DB, EDIT_EVENT_DB, or EPP access rights security: - BearerAuth: [] tags: - Event Templates post: operationId: createEventTemplate summary: Create event template description: Create a new event template. The server assigns a unique event code automatically. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventTemplateInput' example: name: MY_CUSTOM_EVENT severity: 2 flags: 1 message: "Custom event: %1" description: "Custom event template for testing" tags: "tag1,tag2" responses: '201': description: Event template created successfully content: application/json: schema: $ref: '#/components/schemas/EventTemplate' '400': description: Invalid event name '401': description: Unauthorized '403': description: User does not have EDIT_EVENT_DB access right '409': description: Event with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Event Templates /v1/event-templates/{event-code}: get: operationId: getEventTemplate summary: Get event template details description: Retrieve details of a specific event template by its event code. parameters: - name: event-code in: path required: true schema: type: integer description: Event code responses: '200': description: Event template retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EventTemplate' '400': description: Invalid event code '401': description: Unauthorized '403': description: User does not have VIEW_EVENT_DB, EDIT_EVENT_DB, or EPP access rights '404': description: Event template not found security: - BearerAuth: [] tags: - Event Templates put: operationId: updateEventTemplate summary: Update event template description: Update an existing event template. Only the fields provided in the request body will be modified. parameters: - name: event-code in: path required: true schema: type: integer description: Event code requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventTemplateInput' responses: '200': description: Event template updated successfully content: application/json: schema: $ref: '#/components/schemas/EventTemplate' '400': description: Invalid event code or invalid event name '401': description: Unauthorized '403': description: User does not have EDIT_EVENT_DB access right '404': description: Event template not found '409': description: Event with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Event Templates delete: operationId: deleteEventTemplate summary: Delete event template description: | Delete an event template. Only user-defined event templates (event code >= 100000) can be deleted. System event templates cannot be deleted. parameters: - name: event-code in: path required: true schema: type: integer description: Event code (must be >= 100000) responses: '204': description: Event template deleted successfully '400': description: Invalid event code or attempt to delete a system event template '401': description: Unauthorized '403': description: User does not have EDIT_EVENT_DB access right '404': description: Event template not found '500': description: Database failure security: - BearerAuth: [] tags: - Event Templates /v1/dci-summary-tables: get: operationId: listDciSummaryTables summary: List DCI summary tables description: Retrieve a list of available DCI summary tables. responses: '200': description: DCI summary tables retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/SummaryTableListEntry' '401': description: Unauthorized '500': description: Database failure security: - BearerAuth: [] tags: - DCI Summary Tables post: operationId: createDciSummaryTable summary: Create DCI summary table description: Create a new DCI summary table. Requires MANAGE_SUMMARY_TBLS access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SummaryTableInput' responses: '201': description: Summary table created successfully content: application/json: schema: type: object properties: id: type: integer description: ID of the newly created summary table '400': description: Invalid request or missing title field '401': description: Unauthorized '403': description: User does not have MANAGE_SUMMARY_TBLS access right '500': description: Database failure security: - BearerAuth: [] tags: - DCI Summary Tables /v1/dci-summary-tables/{table-id}: get: operationId: getDciSummaryTable summary: Get DCI summary table details description: Retrieve full details of a specific DCI summary table including columns and filter. Requires MANAGE_SUMMARY_TBLS access right. parameters: - name: table-id in: path required: true schema: type: integer description: Summary table ID responses: '200': description: Summary table details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SummaryTableDetails' '400': description: Invalid summary table ID '401': description: Unauthorized '403': description: User does not have MANAGE_SUMMARY_TBLS access right '404': description: Summary table not found '500': description: Database failure security: - BearerAuth: [] tags: - DCI Summary Tables put: operationId: updateDciSummaryTable summary: Update DCI summary table description: Update an existing DCI summary table. Requires MANAGE_SUMMARY_TBLS access right. parameters: - name: table-id in: path required: true schema: type: integer description: Summary table ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SummaryTableInput' responses: '200': description: Summary table updated successfully '400': description: Invalid summary table ID or missing title field '401': description: Unauthorized '403': description: User does not have MANAGE_SUMMARY_TBLS access right '404': description: Summary table not found '500': description: Database failure security: - BearerAuth: [] tags: - DCI Summary Tables delete: operationId: deleteDciSummaryTable summary: Delete DCI summary table description: Delete a DCI summary table. Requires MANAGE_SUMMARY_TBLS access right. parameters: - name: table-id in: path required: true schema: type: integer description: Summary table ID responses: '204': description: Summary table deleted successfully '400': description: Invalid summary table ID '401': description: Unauthorized '403': description: User does not have MANAGE_SUMMARY_TBLS access right '500': description: Database failure security: - BearerAuth: [] tags: - DCI Summary Tables /v1/dci-summary-tables/{table-id}/query: post: operationId: queryDciSummaryTable summary: Query specific DCI summary table description: Execute a query on a specific DCI summary table. parameters: - name: table-id in: path required: true schema: type: integer description: Summary table ID requestBody: required: true content: application/json: schema: type: object properties: objectId: type: integer description: Root object ID for table query responses: '200': description: Summary table query executed successfully content: application/json: schema: type: array items: type: object description: Summary table row data '400': description: Invalid request or invalid summary table ID '401': description: Unauthorized '403': description: Access denied '500': description: Query execution failed security: - BearerAuth: [] tags: - DCI Summary Tables /v1/dci-summary-tables/adhoc-query: post: operationId: adhocQueryDciSummaryTable summary: Execute ad-hoc DCI summary table query description: Execute an ad-hoc query on DCI summary tables. requestBody: required: true content: application/json: schema: type: object required: - tableDefinition properties: tableDefinition: type: object description: Summary table definition object objectId: type: integer description: Root object ID for table query responses: '200': description: Ad-hoc query executed successfully content: application/json: schema: type: array items: type: object description: Query result row data '400': description: Invalid request or missing table definition '401': description: Unauthorized '403': description: Access denied '500': description: Query execution failed security: - BearerAuth: [] tags: - DCI Summary Tables /v1/users: get: operationId: listUsers summary: List users description: Retrieve a list of all users defined in the system. Requires MANAGE_USERS access right. responses: '200': description: Users retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/User' '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right security: - BearerAuth: [] tags: - Users post: operationId: createUser summary: Create user description: Create a new user. Requires MANAGE_USERS access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserCreateInput' example: name: jdoe responses: '201': description: User created successfully content: application/json: schema: $ref: '#/components/schemas/User' '400': description: Invalid or missing name '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '409': description: User with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Users /v1/users/{user-id}: get: operationId: getUser summary: Get user details description: Retrieve details of a specific user by ID. Requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID responses: '200': description: User retrieved successfully content: application/json: schema: $ref: '#/components/schemas/User' '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User not found security: - BearerAuth: [] tags: - Users put: operationId: updateUser summary: Update user description: Update an existing user. Only the fields provided in the request body will be modified. Requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserUpdateInput' responses: '200': description: User updated successfully content: application/json: schema: $ref: '#/components/schemas/User' '400': description: Invalid user ID or invalid user name '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User not found '409': description: User with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Users delete: operationId: deleteUser summary: Delete user description: | Delete a user. The system user (ID 0) cannot be deleted. Users that are currently logged in cannot be deleted. parameters: - name: user-id in: path required: true schema: type: integer description: User ID responses: '204': description: User deleted successfully '400': description: Invalid user ID or attempt to delete system user '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User not found '409': description: User is currently logged in '500': description: Database failure security: - BearerAuth: [] tags: - Users /v1/users/{user-id}/password: post: operationId: setUserPassword summary: Set user password description: | Set or change a user's password. If `oldPassword` is provided, it is treated as a self-change (user changing their own password). If `oldPassword` is omitted, it is treated as an administrative password reset. Users can change their own password without MANAGE_USERS access right. Administrative password reset requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PasswordInput' responses: '200': description: Password changed successfully '400': description: Missing newPassword, weak password, or recently used password '401': description: Unauthorized '403': description: Access denied (wrong old password or insufficient rights) '404': description: User not found '500': description: Database failure security: - BearerAuth: [] tags: - Users /v1/user-groups: get: operationId: listUserGroups summary: List user groups description: Retrieve a list of all user groups defined in the system. Requires MANAGE_USERS access right. responses: '200': description: User groups retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/UserGroup' '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right security: - BearerAuth: [] tags: - User Groups post: operationId: createUserGroup summary: Create user group description: Create a new user group. Requires MANAGE_USERS access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserCreateInput' example: name: operators responses: '201': description: User group created successfully content: application/json: schema: $ref: '#/components/schemas/UserGroup' '400': description: Invalid or missing name '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '409': description: Group with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - User Groups /v1/user-groups/{group-id}: get: operationId: getUserGroup summary: Get user group details description: Retrieve details of a specific user group by ID. Group IDs include the GROUP_FLAG bit (0x40000000). Requires MANAGE_USERS access right. parameters: - name: group-id in: path required: true schema: type: integer description: Group ID (includes GROUP_FLAG bit, e.g. 1073741824 for Everyone) responses: '200': description: User group retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UserGroup' '400': description: Invalid group ID (missing GROUP_FLAG bit) '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User group not found security: - BearerAuth: [] tags: - User Groups put: operationId: updateUserGroup summary: Update user group description: Update an existing user group. Only the fields provided in the request body will be modified. Requires MANAGE_USERS access right. parameters: - name: group-id in: path required: true schema: type: integer description: Group ID (includes GROUP_FLAG bit) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserGroupUpdateInput' responses: '200': description: User group updated successfully content: application/json: schema: $ref: '#/components/schemas/UserGroup' '400': description: Invalid group ID or invalid group name '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User group not found '409': description: Group with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - User Groups delete: operationId: deleteUserGroup summary: Delete user group description: | Delete a user group. The "Everyone" group (ID 1073741824) cannot be deleted. parameters: - name: group-id in: path required: true schema: type: integer description: Group ID (includes GROUP_FLAG bit) responses: '204': description: User group deleted successfully '400': description: Invalid group ID or attempt to delete Everyone group '401': description: Unauthorized '403': description: User does not have MANAGE_USERS access right '404': description: User group not found '500': description: Database failure security: - BearerAuth: [] tags: - User Groups /v1/users/{user-id}/2fa-bindings: get: operationId: listUser2faBindings summary: List user's 2FA bindings description: | Retrieve the list of two-factor authentication method bindings for a specific user. Users can view their own bindings; viewing other users' bindings requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID responses: '200': description: 2FA bindings retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/TwoFactorBinding' '400': description: Invalid user ID '403': description: Access denied (not own user and no MANAGE_USERS right) '404': description: User not found security: - BearerAuth: [] tags: - Two-Factor Authentication /v1/users/{user-id}/2fa-bindings/{method-name}: put: operationId: setUser2faBinding summary: Create or update user 2FA binding description: | Create or update a two-factor authentication method binding for a specific user. Users can manage their own bindings; managing other users' bindings requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID - name: method-name in: path required: true schema: type: string description: 2FA method name requestBody: required: true content: application/json: schema: type: object additionalProperties: type: string description: Method-specific configuration as key-value pairs responses: '200': description: 2FA binding updated successfully '400': description: Invalid user ID or missing method name '403': description: Access denied (not own user and no MANAGE_USERS right) '404': description: User not found or unknown 2FA method '500': description: Internal error security: - BearerAuth: [] tags: - Two-Factor Authentication delete: operationId: deleteUser2faBinding summary: Delete user 2FA binding description: | Delete a two-factor authentication method binding for a specific user. Users can manage their own bindings; managing other users' bindings requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID - name: method-name in: path required: true schema: type: string description: 2FA method name responses: '204': description: 2FA binding deleted successfully '400': description: Invalid user ID or missing method name '403': description: Access denied (not own user and no MANAGE_USERS right) '404': description: User not found or binding not found '500': description: Internal error security: - BearerAuth: [] tags: - Two-Factor Authentication /v1/2fa/drivers: get: operationId: list2faDrivers summary: List available 2FA drivers description: Retrieve the list of available two-factor authentication drivers. Requires MANAGE_2FA_METHODS access right. responses: '200': description: 2FA drivers retrieved successfully content: application/json: schema: type: array items: type: string example: ["TOTP", "Message"] '403': description: User does not have MANAGE_2FA_METHODS access right security: - BearerAuth: [] tags: - Two-Factor Authentication /v1/2fa/methods: get: operationId: list2faMethods summary: List 2FA methods description: Retrieve the list of configured two-factor authentication methods. Requires MANAGE_2FA_METHODS access right. responses: '200': description: 2FA methods retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/TwoFactorMethod' '403': description: User does not have MANAGE_2FA_METHODS access right security: - BearerAuth: [] tags: - Two-Factor Authentication post: operationId: create2faMethod summary: Create 2FA method description: Create a new two-factor authentication method. Requires MANAGE_2FA_METHODS access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TwoFactorMethodInput' responses: '201': description: 2FA method created successfully content: application/json: schema: $ref: '#/components/schemas/TwoFactorMethod' '400': description: Missing or invalid required fields, or unknown driver '403': description: User does not have MANAGE_2FA_METHODS access right '409': description: Method with this name already exists '500': description: Database failure security: - BearerAuth: [] tags: - Two-Factor Authentication /v1/2fa/methods/{method-name}: get: operationId: get2faMethod summary: Get 2FA method details description: Retrieve details of a specific two-factor authentication method. Requires MANAGE_2FA_METHODS access right. parameters: - name: method-name in: path required: true schema: type: string description: 2FA method name responses: '200': description: 2FA method retrieved successfully content: application/json: schema: $ref: '#/components/schemas/TwoFactorMethod' '400': description: Missing method name '403': description: User does not have MANAGE_2FA_METHODS access right '404': description: Method not found security: - BearerAuth: [] tags: - Two-Factor Authentication put: operationId: update2faMethod summary: Update 2FA method description: | Update an existing two-factor authentication method. Only the fields provided in the request body will be modified. Requires MANAGE_2FA_METHODS access right. parameters: - name: method-name in: path required: true schema: type: string description: 2FA method name requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TwoFactorMethodInput' responses: '200': description: 2FA method updated successfully content: application/json: schema: $ref: '#/components/schemas/TwoFactorMethod' '400': description: Unknown driver '403': description: User does not have MANAGE_2FA_METHODS access right '404': description: Method not found '500': description: Database failure security: - BearerAuth: [] tags: - Two-Factor Authentication delete: operationId: delete2faMethod summary: Delete 2FA method description: Delete a two-factor authentication method. Requires MANAGE_2FA_METHODS access right. parameters: - name: method-name in: path required: true schema: type: string description: 2FA method name responses: '204': description: 2FA method deleted successfully '400': description: Missing method name '403': description: User does not have MANAGE_2FA_METHODS access right '500': description: Database failure security: - BearerAuth: [] tags: - Two-Factor Authentication components: schemas: AiSavedPrompt: type: object properties: id: type: integer description: Unique prompt identifier name: type: string description: Display name for the saved prompt description: type: string nullable: true description: Optional description promptText: type: string description: The prompt text InetAddress: type: object properties: family: type: integer description: IP address family address: type: integer description: IP address prefixLength: type: integer description: IP address prefix length LibraryImage: type: object properties: guid: type: string format: uuid description: Unique image identifier. name: type: string description: Image display name. category: type: string description: Image category. mimeType: type: string description: Image MIME type (e.g. image/png, image/svg+xml). isProtected: type: boolean description: Whether the image is a system-protected image that cannot be modified or deleted. GeoArea: type: object properties: id: type: integer description: Unique geo area identifier. name: type: string description: Geo area name. comments: type: string description: Optional comments. border: type: array description: List of border coordinates defining the area polygon. items: type: object properties: latitude: type: number format: double description: Latitude in decimal degrees. longitude: type: number format: double description: Longitude in decimal degrees. GeoAreaCreateUpdate: type: object required: - name properties: name: type: string description: Geo area name (cannot be empty). comments: type: string description: Optional comments. border: type: array description: List of border coordinates defining the area polygon. items: type: object required: - latitude - longitude properties: latitude: type: number format: double description: Latitude in decimal degrees. longitude: type: number format: double description: Longitude in decimal degrees. ObjectCategory: type: object properties: id: type: integer description: Unique object category identifier. name: type: string description: Object category name. icon: type: string format: uuid description: UUID of the icon image from the image library. mapImage: type: string format: uuid description: UUID of the map image from the image library. ObjectCategoryCreateUpdate: type: object required: - name properties: name: type: string description: Object category name (cannot be empty). icon: type: string format: uuid description: UUID of the icon image from the image library. mapImage: type: string format: uuid description: UUID of the map image from the image library. ScheduledTask: type: object properties: id: type: integer format: int64 description: Unique task identifier taskHandlerId: type: string description: Task handler identifier schedule: type: string description: Cron-style schedule expression (for recurrent tasks) parameters: type: string description: Task-specific persistent data scheduledExecutionTime: type: string format: date-time nullable: true description: Scheduled execution time in ISO 8601 format, or null if not set lastExecutionTime: type: string format: date-time nullable: true description: Last execution time in ISO 8601 format, or null if never executed recurrent: type: boolean description: Whether this is a recurrent (cron-based) task disabled: type: boolean description: Whether the task is disabled completed: type: boolean description: Whether the task has completed running: type: boolean description: Whether the task is currently running system: type: boolean description: Whether this is a system task userId: type: integer description: Owner user ID objectId: type: integer description: Associated NetXMS object ID comments: type: string description: Task comments taskKey: type: string description: Optional task key for identification ScheduledTaskCreateUpdate: type: object required: - taskHandlerId properties: taskHandlerId: type: string description: Task handler identifier schedule: type: string description: Cron-style schedule expression (for recurrent tasks) executionTime: oneOf: - type: integer format: int64 - type: string format: date-time description: Execution time for one-time tasks. Accepts Unix timestamp (integer) or ISO 8601 string. parameters: type: string description: Task-specific persistent data objectId: type: integer description: Associated NetXMS object ID comments: type: string description: Task comments taskKey: type: string description: Optional task key for identification disabled: type: boolean description: Whether the task should be disabled NotificationChannel: type: object properties: name: type: string description: Channel name description: type: string description: Channel description driverName: type: string description: Notification driver name configuration: type: string description: Driver-specific configuration driverInitialized: type: boolean description: Whether the driver was initialized successfully needSubject: type: boolean description: Whether the driver requires a subject field needRecipient: type: boolean description: Whether the driver requires a recipient field errorMessage: type: string description: Last error message sendStatus: type: integer description: Last send status code healthCheckStatus: type: boolean description: Health check status lastMessageTime: type: string description: Timestamp of last sent message messageCount: type: integer description: Total messages sent failureCount: type: integer description: Total send failures digestedCount: type: integer description: Total messages absorbed into digest queueSize: type: integer description: Current message queue size Alarm: type: object properties: id: type: integer message: type: string severity: type: string User: type: object description: User account properties: id: type: integer description: User ID guid: type: string format: uuid description: User GUID name: type: string description: Login name description: type: string description: User description systemRights: type: integer description: System access rights bitmask uiAccessRules: type: string description: UI access rules flags: $ref: '#/components/schemas/UserFlags' attributes: type: object additionalProperties: type: string description: Custom attributes ldapDn: type: string nullable: true description: LDAP distinguished name ldapId: type: string nullable: true description: LDAP unique ID created: type: integer description: Account creation time (Unix timestamp) fullName: type: string description: Full name graceLogins: type: integer description: Remaining grace logins authMethod: type: integer description: "Authentication method (0=Local, 1=RADIUS, 2=Certificate, 3=Certificate or Local, 4=Certificate or RADIUS, 5=LDAP)" certMappingMethod: type: integer description: Certificate mapping method certMappingData: type: string nullable: true description: Certificate mapping data disabledUntil: type: integer description: Disabled until time (Unix timestamp, 0 if not temporarily disabled) lastPasswordChange: type: integer description: Last password change time (Unix timestamp) lastLogin: type: integer description: Last login time (Unix timestamp) minPasswordLength: type: integer description: Minimum password length (-1 for system default) authFailures: type: integer description: Consecutive authentication failure count email: type: string description: Email address phoneNumber: type: string description: Phone number groups: type: array items: type: integer description: List of group identifiers this user belongs to UserGroup: type: object description: User group properties: id: type: integer description: Group ID (includes GROUP_FLAG bit 0x40000000) guid: type: string format: uuid description: Group GUID name: type: string description: Group name description: type: string description: Group description systemRights: type: integer description: System access rights bitmask uiAccessRules: type: string description: UI access rules flags: $ref: '#/components/schemas/UserFlags' attributes: type: object additionalProperties: type: string description: Custom attributes ldapDn: type: string nullable: true description: LDAP distinguished name ldapId: type: string nullable: true description: LDAP unique ID created: type: integer description: Group creation time (Unix timestamp) members: type: array items: type: integer description: List of member user IDs UserCreateInput: type: object description: User or group creation request required: - name properties: name: type: string description: Login name (must be a valid object name) UserUpdateInput: type: object description: User update request. All fields are optional - only provided fields are modified. properties: name: type: string description: New login name description: type: string description: User description fullName: type: string description: Full name flags: $ref: '#/components/schemas/UserFlags' systemRights: type: integer description: System access rights bitmask uiAccessRules: type: string description: UI access rules authMethod: type: integer description: Authentication method minPasswordLength: type: integer description: Minimum password length disabledUntil: type: integer description: Disabled until time (Unix timestamp) certMappingMethod: type: integer description: Certificate mapping method certMappingData: type: string description: Certificate mapping data email: type: string description: Email address phoneNumber: type: string description: Phone number attributes: type: object additionalProperties: type: string description: Custom attributes (replaces all existing attributes) groupMembership: type: array items: type: integer description: List of group IDs the user should belong to (replaces current membership) UserGroupUpdateInput: type: object description: User group update request. All fields are optional - only provided fields are modified. properties: name: type: string description: New group name description: type: string description: Group description flags: $ref: '#/components/schemas/UserFlags' systemRights: type: integer description: System access rights bitmask uiAccessRules: type: string description: UI access rules attributes: type: object additionalProperties: type: string description: Custom attributes (replaces all existing attributes) members: type: array items: type: integer description: List of member user IDs (replaces current members) UserFlags: type: object description: User or group flags. When used in update requests, only the specified boolean fields are modified (PATCH semantics). properties: disabled: type: boolean description: Whether the account is disabled changePassword: type: boolean description: Must change password at next login cannotChangePassword: type: boolean description: Cannot change own password intruderLockout: type: boolean description: Account locked out due to repeated authentication failures passwordNeverExpires: type: boolean description: Password never expires ldapUser: type: boolean description: Synchronized from LDAP syncException: type: boolean description: Excluded from LDAP synchronization closeOtherSessions: type: boolean description: Close other sessions on login tokenAuthOnly: type: boolean description: Can only authenticate using API tokens twoFAExempt: type: boolean description: Exempt from two-factor authentication twoFAEnforce: type: boolean description: Two-factor authentication is enforced serviceAccount: type: boolean description: Service account (can only authenticate via API tokens, interactive login rejected) TwoFactorMethod: type: object description: Two-factor authentication method properties: name: type: string description: Method name (unique identifier) driver: type: string description: Driver name (e.g., "TOTP", "Message") description: type: string description: Method description isValid: type: boolean description: Whether the method configuration is valid configuration: type: object description: Driver-specific configuration (structure depends on the driver) TwoFactorMethodInput: type: object description: Two-factor authentication method create/update request required: - name - driver properties: name: type: string description: Method name driver: type: string description: Driver name (e.g., "TOTP", "Message") description: type: string description: Method description configuration: type: object description: Driver-specific configuration TwoFactorBinding: type: object description: User's two-factor authentication method binding properties: methodName: type: string description: Name of the 2FA method configuration: type: object additionalProperties: type: string description: Method-specific binding configuration as key-value pairs PasswordInput: type: object description: Password change request required: - newPassword properties: newPassword: type: string description: The new password oldPassword: type: string description: Current password (required for self-change, omit for admin reset) EventTemplate: type: object description: Event template definition properties: code: type: integer description: Unique event code name: type: string description: Event name (unique identifier) guid: type: string format: uuid description: Event template GUID severity: type: integer description: "Default event severity (0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical)" flags: type: integer description: Event flags bitmask (1=write to log) message: type: string description: Message template with %1..%n parameter placeholders description: type: string description: Detailed event description tags: type: array items: type: string description: List of event tags EventTemplateInput: type: object description: Event template create/update request body properties: name: type: string description: Event name (must be a valid object name, unique across all event templates) severity: type: integer description: "Default event severity (0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical)" flags: type: integer description: Event flags bitmask (1=write to log) message: type: string description: Message template with %1..%n parameter placeholders description: type: string description: Detailed event description tags: type: string description: Comma-separated list of event tags SummaryTableListEntry: type: object description: DCI summary table list entry properties: id: type: integer description: Summary table ID menuPath: type: string description: Menu path for the summary table title: type: string description: Summary table title flags: type: integer description: Summary table flags guid: type: string format: uuid description: Summary table GUID SummaryTableDetails: type: object description: Full DCI summary table definition properties: id: type: integer description: Summary table ID guid: type: string format: uuid description: Summary table GUID menuPath: type: string description: Menu path for the summary table title: type: string description: Summary table title flags: type: integer description: Summary table flags nodeFilter: type: string description: NXSL filter script source tableDciName: type: string description: Table DCI name (for table-based summary tables) columns: type: array items: $ref: '#/components/schemas/SummaryTableColumn' description: Column definitions SummaryTableColumn: type: object description: DCI summary table column definition properties: name: type: string description: Column display name dciName: type: string description: DCI name to collect data from flags: type: integer description: Column flags separator: type: string description: Multi-value separator (default ";") SummaryTableInput: type: object description: DCI summary table create/update request body required: - title properties: title: type: string description: Summary table title menuPath: type: string description: Menu path for the summary table nodeFilter: type: string description: NXSL filter script source flags: type: integer description: Summary table flags tableDciName: type: string description: Table DCI name (for table-based summary tables) columns: type: array items: $ref: '#/components/schemas/SummaryTableColumn' description: Column definitions ScriptSummary: type: object properties: id: type: integer description: Script ID name: type: string description: Script name ScriptDetails: type: object properties: id: type: integer description: Script ID name: type: string description: Script name code: type: string description: NXSL source code ObjectToolType: type: string enum: - internal - action - snmp-table - agent-list - url - command - server-command - file-download - server-script - agent-table - ssh-command description: Type of object tool ObjectToolInputField: type: object properties: name: type: string description: Field name type: type: integer description: Field type displayName: type: string description: Display name for the field flags: type: integer description: Field flags sequence: type: integer description: Field sequence order ObjectToolSummary: type: object properties: id: type: integer description: Tool ID name: type: string description: Tool name type: $ref: '#/components/schemas/ObjectToolType' flags: type: object description: Tool flags properties: askConfirmation: type: boolean description: Whether to ask for user confirmation before execution generatesOutput: type: boolean description: Whether the tool generates output disabled: type: boolean description: Whether the tool is disabled showInCommands: type: boolean description: Whether to show in commands menu snmpIndexedByValue: type: boolean description: Whether SNMP is indexed by value runInContainerContext: type: boolean description: Whether to run in container context suppressSuccessMessage: type: boolean description: Whether to suppress success message setupTcpTunnel: type: boolean description: Whether to setup TCP tunnel confirmationMessage: type: string description: Confirmation message shown to user commandName: type: string description: Full command name commandShortName: type: string description: Short command name inputFields: type: array items: $ref: '#/components/schemas/ObjectToolInputField' description: Input field definitions ObjectToolDetails: allOf: - $ref: '#/components/schemas/ObjectToolSummary' - type: object properties: data: type: string description: Tool-specific data description: type: string description: Tool description filter: type: string description: Tool filter (matching OID for SNMP tools) icon: type: string description: Icon as hex-encoded image data remotePort: type: integer description: Remote port for TCP tunnel ObjectToolTextResult: type: object required: - type - output properties: type: type: string enum: [text] output: type: string description: Text output from tool execution (agent action output, server command output, or script output with result) ObjectToolTableResult: type: object required: - type - table properties: type: type: string enum: [table] table: type: object description: Table result from SNMP table, agent table, or agent list tool execution properties: extendedFormat: type: boolean source: type: integer title: type: string description: Table title columns: type: array items: type: object properties: name: type: string description: Column name dataType: type: integer description: Column data type code displayName: type: string description: Column display name instanceColumn: type: boolean unitName: type: string multiplier: type: integer useMultiplier: type: integer data: type: array items: type: object properties: objectId: type: integer baseRow: type: integer values: type: array items: type: object properties: status: type: integer description: Cell status code value: type: string description: Cell value ObjectToolNoResult: type: object required: - type properties: type: type: string enum: [none] description: Indicates tool executed successfully but produced no output ObjectToolUrlResult: type: object required: - type - url properties: type: type: string enum: [url] url: type: string description: Expanded URL with all macros resolved ObjectToolStreamingResult: type: object required: - token - wsUrl properties: token: type: string format: uuid description: Single-use token for WebSocket connection (expires in 30 seconds) wsUrl: type: string description: WebSocket URL path to connect for streaming output ObjectClass: type: string enum: - AccessPoint - AgentPolicyLogParser - Asset - AssetGroup - AssetRoot - BusinessService - BusinessServiceProto - BusinessServiceRoot - Chassis - Cluster - Condition - Container - Dashboard - DashboardGroup - DashboardRoot - Generic - Interface - MobileDevice - Network - NetworkMap - NetworkMapGroup - NetworkMapRoot - NetworkService - Node - NodeLink - Rack - Report - ReportGroup - ReportRoot - Sensor - ServiceCheck - ServiceRoot - Subnet - Template - TemplateGroup - TemplateRoot - VPNConnector - Zone GrafanaAlarm: type: object properties: Id: type: integer description: Alarm ID Severity: type: string description: Alarm severity name (Normal, Warning, Minor, Major, Critical, etc.) State: type: string description: Alarm state name (Outstanding, Acknowledged, Resolved, Terminated) Source: type: string description: Source object name (may include alias in parentheses) Message: type: string description: Alarm message Count: type: integer description: Alarm repeat count Ack/Resolve by: type: string description: User who acknowledged/resolved the alarm Created: type: string format: date-time description: Alarm creation time Last Change: type: string format: date-time description: Last change time of the alarm ObjectDetails: type: object properties: alias: type: string description: Object alias category: type: integer description: Object category ID class: $ref: '#/components/schemas/ObjectClass' guid: type: string format: uuid description: Object GUID id: type: integer description: Object ID name: type: string description: Object name timestamp: type: string format: date-time description: Object last change timestamp status: $ref: '#/components/schemas/Status' TopologyMap: type: object description: Ad-hoc topology map containing discovered objects and the links between them properties: objects: type: array description: List of objects in the topology items: $ref: '#/components/schemas/ObjectSummary' links: type: array description: Links between objects items: $ref: '#/components/schemas/TopologyLink' TopologyLink: type: object description: A link between two objects in a topology map properties: object1: type: integer description: First object ID object2: type: integer description: Second object ID interface1: type: integer description: Interface ID on first object (0 if not applicable) interface2: type: integer description: Interface ID on second object (0 if not applicable) type: type: integer description: "Link type (0=normal, 1=VPN, 2=multilink, 3=agent tunnel, 4=agent proxy, 5=SSH proxy, 6=SNMP proxy, 7=ICMP proxy, 8=sensor proxy, 9=zone proxy, 10=WiFi client)" name: type: string description: Link name port1: type: string description: Port/connector name on first object port2: type: string description: Port/connector name on second object flags: type: integer description: Link flags ObjectQueryResult: type: object properties: fields: type: object additionalProperties: type: string description: Set of key-value pairs where key is object attribute name and value is actual value read from object. object: $ref: '#/components/schemas/ObjectSummary' ObjectSummary: type: object properties: alias: type: string description: Object alias category: type: integer description: Object category ID class: $ref: '#/components/schemas/ObjectClass' guid: type: string format: uuid description: Object GUID id: type: integer description: Object ID ipAddress: $ref: '#/components/schemas/InetAddress' name: type: string description: Object name timestamp: type: string format: date-time description: Object last change timestamp status: $ref: '#/components/schemas/Status' Status: type: integer enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 DCIValue: type: object description: Data Collection Item (DCI) current value properties: ownerId: type: integer description: Object ID that owns this DCI id: type: integer description: DCI ID name: type: string description: DCI name flags: type: integer description: DCI flags description: type: string description: DCI description sourceType: type: integer description: Data source type dataType: type: integer description: Data type value: type: string description: Current value as string timestamp: type: integer description: Timestamp of last value collection (Unix timestamp) status: type: integer description: Current DCI status type: type: integer description: DCI type errorCount: type: integer description: Number of consecutive collection errors templateItemId: type: integer description: Template item ID if DCI is created from template unitName: type: string description: Unit name for the value multiplier: type: integer description: Value multiplier noValue: type: boolean description: True if DCI has no collected value comments: type: string description: DCI comments anomalyDetected: type: boolean description: True if anomaly was detected in recent values userTag: type: string description: User-defined tag hasActiveThreshold: type: boolean description: True if DCI has active threshold threshold: type: object description: Active threshold information (present only if hasActiveThreshold is true) TcpProxyConnectedMessage: type: object description: WebSocket text message sent when TCP proxy connection is established properties: type: type: string enum: [connected] channelId: type: integer description: Channel ID for the established TCP proxy connection TcpProxyErrorMessage: type: object description: WebSocket text message sent when an error occurs properties: type: type: string enum: [error] code: type: integer description: | Error code (RCC - Request Completion Code): - 0: Success - 1: Component locked - 2: Access denied - 3: Invalid request - 4: Request timeout - 5: Access denied - 7: Communication failure - 8: Invalid object ID message: type: string description: Human-readable error message TcpProxyCloseMessage: type: object description: WebSocket text message sent when the TCP proxy connection is closed properties: type: type: string enum: [close] reason: type: string enum: [normal, error, agent_disconnect] description: | Reason for connection closure: - normal: Connection closed normally by remote end - error: Connection closed due to an error - agent_disconnect: Agent connection was lost ServerAction: type: object description: Server action configuration properties: id: type: integer description: Action ID guid: type: string format: uuid description: Action GUID name: type: string description: Action name type: type: integer description: "Action type: 0=execute command on server, 1=execute command on remote node via agent, 3=send notification, 4=forward event, 5=execute server-side script, 7=execute command via SSH" typeDescription: type: string description: Human-readable action type description isDisabled: type: boolean description: Whether the action is disabled recipientAddress: type: string description: Recipient address (supports macros) emailSubject: type: string description: Email subject (supports macros) notificationChannelName: type: string description: Notification channel name ServerActionCreate: type: object required: - name properties: name: type: string description: Action name type: type: integer description: Action type isDisabled: type: boolean description: Whether the action is disabled data: type: string description: Action data (command, message, or script name depending on type) recipientAddress: type: string description: Recipient address emailSubject: type: string description: Email subject notificationChannelName: type: string description: Notification channel name ServerActionUpdate: type: object properties: name: type: string description: Action name type: type: integer description: Action type isDisabled: type: boolean description: Whether the action is disabled data: type: string description: Action data (command, message, or script name depending on type) recipientAddress: type: string description: Recipient address emailSubject: type: string description: Email subject notificationChannelName: type: string description: Notification channel name SshKey: type: object properties: id: type: integer description: SSH key ID name: type: string description: SSH key name publicKey: type: string description: Public key in OpenSSH format (included in details and when includePublicKey=true) SshKeyCreate: type: object required: - name properties: name: type: string description: SSH key name publicKey: type: string description: Public key to import (omit to generate a new key pair) privateKey: type: string description: Private key to import (required if publicKey is provided) SshKeyUpdate: type: object required: - name properties: name: type: string description: SSH key name publicKey: type: string description: New public key privateKey: type: string description: New private key SshKeyInUse: type: object properties: reason: type: string description: Error description nodesInUse: type: array items: type: integer description: List of node IDs using the key WebServiceDefinition: type: object properties: id: type: integer description: Web service definition ID guid: type: string description: Web service definition GUID name: type: string description: Definition name description: type: string description: Definition description url: type: string description: Web service URL (may contain %1, %2, etc. for parameter substitution) httpRequestMethod: type: integer description: "HTTP request method (0=GET, 1=POST, 2=PUT, 3=DELETE, 4=PATCH)" requestData: type: string description: Request body data flags: type: integer description: "Flags (bit mask: 1=verify certificate, 2=verify host, 4=force plain text parser, 8=follow location)" authType: type: integer description: "Authentication type (0=none, 1=basic, 2=digest, 3=NTLM, 4=bearer, 5=any)" login: type: string description: Login name or token password: type: string description: Password cacheRetentionTime: type: integer description: Cache retention time in milliseconds requestTimeout: type: integer description: Request timeout in milliseconds headers: type: array items: type: object properties: name: type: string value: type: string description: HTTP headers WebServiceDefinitionCreate: type: object required: - name - url properties: name: type: string description: Definition name description: type: string description: Definition description url: type: string description: Web service URL httpRequestMethod: type: integer description: "HTTP request method (0=GET, 1=POST, 2=PUT, 3=DELETE, 4=PATCH)" requestData: type: string description: Request body data flags: type: integer description: "Flags (bit mask: 1=verify certificate, 2=verify host, 4=force plain text parser, 8=follow location)" authType: type: integer description: "Authentication type (0=none, 1=basic, 2=digest, 3=NTLM, 4=bearer, 5=any)" login: type: string description: Login name or token password: type: string description: Password cacheRetentionTime: type: integer description: Cache retention time in milliseconds requestTimeout: type: integer description: Request timeout in milliseconds (default 30000) headers: type: array items: type: object properties: name: type: string value: type: string description: HTTP headers securitySchemes: BearerAuth: type: http scheme: bearer