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: Incidents description: Incident 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: Event Processing Policy description: Event processing policy management - name: Users description: User management - name: User Groups description: User group management - name: Notification Channels description: Notification channel and driver management - name: Event Forwarders description: Event forwarder and driver management - name: Chat Bots description: Chat bot and driver management - name: SNMP MIB description: Browse the server's compiled SNMP MIB tree - 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 - name: Asset Management Schema description: Asset management schema (asset attribute definitions) - name: Cloud Connectors description: Cloud connector information - name: Logs description: Server-side log discovery and querying 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 dciAggregationEnabled: type: boolean description: True if DCI data aggregation (hourly/daily tiers) is enabled on the server 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 capabilities: type: array description: Optional list of client capabilities. Recognized values - "visualizations" (enables visualization output from the assistant). items: type: string 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/observations: get: operationId: listAiObservations summary: Query AI operator observations description: >- Retrieve observations recorded by AI operator instances, most recent first. Requires the "view event log" system access right. parameters: - name: instance in: query required: false schema: type: integer description: Limit to observations of the given operator instance - name: object in: query required: false schema: type: integer description: Limit to observations related to the given object - name: state in: query required: false schema: type: string enum: [new, acknowledged, dismissed] description: Limit to observations in the given state - name: since in: query required: false schema: type: string description: >- Only observations recorded at or after the given time (UNIX timestamp, ISO 8601, or relative like -1h) - name: limit in: query required: false schema: type: integer default: 100 description: Maximum number of records to return (0 = unlimited) responses: '200': description: List of observations content: application/json: schema: type: array items: $ref: '#/components/schemas/AiObservation' '400': description: Invalid query parameters '403': description: Insufficient access rights '500': description: Database failure security: - BearerAuth: [] tags: - AI Operators /v1/ai/observations/{observation-id}/state: put: operationId: setAiObservationState summary: Set observation state description: >- Acknowledge or dismiss an AI operator observation (or return it to the "new" state). Requires "update alarms" access to the observation's source object; server-level observations require the "manage AI operators" system access right. parameters: - name: observation-id in: path required: true schema: type: integer format: int64 requestBody: required: true content: application/json: schema: type: object required: - state properties: state: type: string enum: [new, acknowledged, dismissed] description: New observation state responses: '204': description: State updated '400': description: Invalid observation ID or state '403': description: Insufficient access rights '404': description: Observation not found '500': description: Database failure security: - BearerAuth: [] tags: - AI Operators /v1/ai/operators: get: operationId: listAiOperators summary: List AI operator instances description: >- Retrieve all AI operator instances (perpetual adaptive monitoring loops). Requires the "manage AI operators" system access right. responses: '200': description: List of AI operator instances content: application/json: schema: type: array items: $ref: '#/components/schemas/AiOperator' '403': description: Insufficient access rights security: - BearerAuth: [] tags: - AI Operators post: operationId: createAiOperator summary: Create AI operator instance description: >- Create a new AI operator instance. New instances are enabled by default unless explicitly created as disabled. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiOperatorConfig' responses: '201': description: Instance created content: application/json: schema: $ref: '#/components/schemas/AiOperator' '400': description: Missing or invalid fields '403': description: Insufficient access rights '500': description: Internal server error security: - BearerAuth: [] tags: - AI Operators /v1/ai/operators/{operator-id}: get: operationId: getAiOperator summary: Get AI operator instance details parameters: - name: operator-id in: path required: true schema: type: integer responses: '200': description: AI operator instance details content: application/json: schema: $ref: '#/components/schemas/AiOperator' '403': description: Insufficient access rights '404': description: Instance not found security: - BearerAuth: [] tags: - AI Operators patch: operationId: updateAiOperator summary: Modify AI operator instance description: >- Partially update an AI operator instance; only the fields present in the request body are changed. parameters: - name: operator-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiOperatorConfig' responses: '200': description: Updated instance content: application/json: schema: $ref: '#/components/schemas/AiOperator' '400': description: Invalid configuration '403': description: Insufficient access rights '404': description: Instance not found security: - BearerAuth: [] tags: - AI Operators delete: operationId: deleteAiOperator summary: Delete AI operator instance description: Delete an AI operator instance and all its observations. parameters: - name: operator-id in: path required: true schema: type: integer responses: '204': description: Instance deleted '403': description: Insufficient access rights '404': description: Instance not found security: - BearerAuth: [] tags: - AI Operators /v1/ai/operators/{operator-id}/reset-memento: post: operationId: resetAiOperatorMemento summary: Reset AI operator accumulated state description: >- Clear the instance's accumulated adaptive state (memento, current focus, watch list, and iteration counter). The next execution starts from a clean slate. parameters: - name: operator-id in: path required: true schema: type: integer responses: '204': description: State reset '403': description: Insufficient access rights '404': description: Instance not found security: - BearerAuth: [] tags: - AI Operators /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/alarm-categories: get: operationId: listAlarmCategories tags: - Alarm Categories summary: Get all alarm categories description: Retrieve the list of all configured alarm categories. Requires EPP system access right. responses: '200': description: List of alarm categories. content: application/json: schema: type: array items: $ref: '#/components/schemas/AlarmCategory' '401': description: Unauthorized. '403': description: Access denied. security: - BearerAuth: [] post: operationId: createAlarmCategory tags: - Alarm Categories summary: Create a new alarm category description: Create a new alarm category. Requires EPP system access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AlarmCategoryCreateUpdate' responses: '201': description: Alarm category created successfully. content: application/json: schema: $ref: '#/components/schemas/AlarmCategory' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '500': description: Internal server error. security: - BearerAuth: [] /v1/alarm-categories/{category-id}: get: operationId: getAlarmCategory tags: - Alarm Categories summary: Get alarm category details description: Retrieve details of a specific alarm category. Requires EPP system access right. parameters: - name: category-id in: path required: true schema: type: integer description: Alarm category ID. responses: '200': description: Alarm category details. content: application/json: schema: $ref: '#/components/schemas/AlarmCategory' '400': description: Invalid category ID. '401': description: Unauthorized. '403': description: Access denied. '404': description: Alarm category not found. security: - BearerAuth: [] put: operationId: updateAlarmCategory tags: - Alarm Categories summary: Update an alarm category description: Update an existing alarm category. Requires EPP system access right. parameters: - name: category-id in: path required: true schema: type: integer description: Alarm category ID. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AlarmCategoryCreateUpdate' responses: '200': description: Alarm category updated successfully. content: application/json: schema: $ref: '#/components/schemas/AlarmCategory' '400': description: Invalid request (missing or empty name). '401': description: Unauthorized. '403': description: Access denied. '404': description: Alarm category not found. '500': description: Internal server error. security: - BearerAuth: [] delete: operationId: deleteAlarmCategory tags: - Alarm Categories summary: Delete an alarm category description: Delete an alarm category. Requires EPP system access right. Returns 409 if the category is referenced by any event processing policy rule. parameters: - name: category-id in: path required: true schema: type: integer description: Alarm category ID. responses: '204': description: Alarm category deleted successfully. '400': description: Invalid category ID. '401': description: Unauthorized. '403': description: Access denied. '404': description: Alarm category not found. '409': description: Alarm category is in use by one or more event processing policy rules. '500': description: Internal server error. security: - BearerAuth: [] /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 description: "Current severity: 0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical" state: type: integer description: "Alarm state: 0=Outstanding, 1=Acknowledged, 2=Resolved, 3=Terminated" source: type: integer description: Source object ID sourceName: type: string description: Name of the source object zoneUIN: type: integer description: Zone UIN of the source object (0 if zoning is disabled) message: type: string repeatCount: type: integer description: Number of times the alarm was raised commentCount: type: integer description: Number of comments attached to the alarm helpdeskReference: type: string description: Helpdesk issue reference (empty if not linked) creationTime: type: string format: date-time lastChangeTime: type: string format: date-time ackByUserName: type: string description: Name of the user who acknowledged the alarm (empty if not acknowledged) resolvedByUserName: type: string description: Name of the user who resolved the alarm (empty if not resolved) categories: type: array description: Alarm categories (as assigned by the event processing policy rule that raised the alarm) items: $ref: '#/components/schemas/AlarmCategoryReference' sourceObject: allOf: - $ref: '#/components/schemas/ObjectSummary' description: Full source object summary. Present only when includeObjectDetails=true. 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 content: application/json: schema: $ref: '#/components/schemas/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}/comments: get: operationId: getAlarmComments summary: List Alarm Comments description: Retrieve all comments attached to an alarm. parameters: - name: alarm-id in: path required: true schema: type: integer responses: '200': description: List of alarm comments. content: application/json: schema: type: array items: $ref: '#/components/schemas/AlarmComment' '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 post: operationId: createAlarmComment summary: Create Alarm Comment description: Add a new comment to an alarm. If the alarm is linked to an open helpdesk issue, the comment is also added to that issue. parameters: - name: alarm-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object required: - text properties: text: type: string description: Comment text responses: '201': description: Comment created. content: application/json: schema: $ref: '#/components/schemas/AlarmComment' '400': description: Invalid alarm ID or empty comment text '401': description: Unauthorized '403': description: User does not have update access to alarm or alarm's source object '404': description: Alarm with given ID does not exist '500': description: Database failure security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}/comments/{comment-id}: put: operationId: updateAlarmComment summary: Update Alarm Comment description: Update text of an existing alarm comment. parameters: - name: alarm-id in: path required: true schema: type: integer - name: comment-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object required: - text properties: text: type: string description: Comment text responses: '200': description: Comment updated. content: application/json: schema: $ref: '#/components/schemas/AlarmComment' '400': description: Invalid alarm ID, invalid comment ID, or empty comment text '401': description: Unauthorized '403': description: User does not have update access to alarm or alarm's source object '404': description: Alarm with given ID does not exist, or comment with given ID does not belong to that alarm '500': description: Database failure security: - BearerAuth: [] tags: - Alarms delete: operationId: deleteAlarmComment summary: Delete Alarm Comment description: Delete an alarm comment. parameters: - name: alarm-id in: path required: true schema: type: integer - name: comment-id in: path required: true schema: type: integer responses: '204': description: Comment deleted. '400': description: Invalid alarm ID or invalid comment ID '401': description: Unauthorized '403': description: User does not have update access to alarm or alarm's source object '404': description: Alarm with given ID does not exist, or comment with given ID does not belong to that alarm '500': description: Database failure security: - BearerAuth: [] tags: - Alarms /v1/alarms/{alarm-id}/events: get: operationId: getAlarmEvents summary: List Alarm Related Events description: >- Retrieve events related to an alarm, limited to the 200 most recent root events. The list is flat and ordered from newest to oldest, with each root event immediately followed by the events correlated to it. Correlation is expressed by the parentId attribute, so the client can rebuild the correlation tree. Requires system-wide "view event log" access in addition to read access to the alarm. parameters: - name: alarm-id in: path required: true schema: type: integer responses: '200': description: List of related events. content: application/json: schema: type: array items: $ref: '#/components/schemas/AlarmEvent' '401': description: Unauthorized '403': description: User does not have "view event log" system access right, or 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/incidents: get: operationId: listIncidents summary: List Incidents description: > Retrieve incident summaries, newest first. Reads from the database, so closed incidents are included as well. Only incidents whose source object is readable by the caller are returned. parameters: - name: objectId in: query description: Return only incidents created on given source object (0 or absent for all objects). schema: type: integer - name: state in: query description: Comma-separated list of incident states to include (absent for all states). example: '0,1,2' schema: type: string - name: from in: query description: Return only incidents created at or after this point in time. schema: type: string - name: to in: query description: Return only incidents created at or before this point in time. schema: type: string - name: limit in: query description: Maximum number of incidents to return (default 1000, maximum 10000). schema: type: integer responses: '200': description: Successful retrieval of incidents. content: application/json: schema: type: array items: $ref: '#/components/schemas/IncidentSummary' '400': description: Invalid filter parameters '401': description: Unauthorized security: - BearerAuth: [] tags: - Incidents post: operationId: createIncident summary: Create Incident description: > Create new incident on given source object. If sourceAlarmId is provided, that alarm is linked to the new incident. An alarm can belong to one incident only. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentCreate' responses: '201': description: Incident created. headers: Location: description: URL of created incident. schema: type: string content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Invalid request (missing source object or empty title) '401': description: Unauthorized '403': description: > User does not have "Manage incidents" access to source object, or no read access to source alarm '404': description: Source object or source alarm does not exist '409': description: Source alarm is already linked to another incident security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}: get: operationId: getIncident summary: Get Incident Details description: Retrieve full incident details, including linked alarm IDs and comments. parameters: - name: incident-id in: path required: true schema: type: integer responses: '200': description: Successful retrieval of incident. content: application/json: schema: $ref: '#/components/schemas/Incident' '401': description: Unauthorized '403': description: User does not have read access to incident's source object '404': description: Incident with given ID does not exist security: - BearerAuth: [] tags: - Incidents put: operationId: updateIncident summary: Update Incident description: Update incident. Title is the only mutable field. parameters: - name: incident-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentUpdate' responses: '200': description: Incident updated. content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Invalid request (empty title) '401': description: Unauthorized '403': description: User does not have "Manage incidents" access to incident's source object '404': description: Incident with given ID does not exist '409': description: Incident is closed and cannot be modified security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/state: post: operationId: changeIncidentState summary: Change Incident State description: > Change incident state. Moving to RESOLVED resolves all linked alarms, moving to CLOSED terminates them. CLOSED is terminal - no further changes are accepted. Moving to BLOCKED requires a comment. parameters: - name: incident-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentStateChange' responses: '200': description: Incident state changed. content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Invalid state value, or comment missing for BLOCKED state '401': description: Unauthorized '403': description: User does not have "Manage incidents" access to incident's source object '404': description: Incident with given ID does not exist '409': description: Incident is closed and cannot be modified security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/assign: post: operationId: assignIncident summary: Assign Incident description: Assign incident to a user. User ID 0 clears the assignment. parameters: - name: incident-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentAssign' responses: '200': description: Incident assigned. content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Missing or unknown user ID '401': description: Unauthorized '403': description: User does not have "Manage incidents" access to incident's source object '404': description: Incident with given ID does not exist '409': description: Incident is closed and cannot be modified security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/comments: post: operationId: addIncidentComment summary: Add Incident Comment description: Add comment to incident. Incident comments cannot be updated or deleted. parameters: - name: incident-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentCommentCreate' responses: '201': description: Comment added. content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Comment text is empty '401': description: Unauthorized '403': description: User does not have "Manage incidents" access to incident's source object '404': description: Incident with given ID does not exist '409': description: Incident is closed and cannot be modified security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/alarms: post: operationId: linkAlarmToIncident summary: Link Alarm To Incident description: Link an alarm to incident. An alarm can belong to one incident only. parameters: - name: incident-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncidentAlarmLink' responses: '200': description: Alarm linked. content: application/json: schema: $ref: '#/components/schemas/Incident' '400': description: Missing or invalid alarm ID '401': description: Unauthorized '403': description: > User does not have "Manage incidents" access to incident's source object, or no read access to the alarm '404': description: Incident or alarm with given ID does not exist '409': description: Incident is closed, or alarm is already linked to another incident security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/alarms/{alarm-id}: delete: operationId: unlinkAlarmFromIncident summary: Unlink Alarm From Incident description: > Unlink an alarm from incident. Unlike most DELETE endpoints this one answers with the updated incident, so that all incident mutations behave consistently. parameters: - name: incident-id in: path required: true schema: type: integer - name: alarm-id in: path required: true schema: type: integer responses: '200': description: Alarm unlinked. content: application/json: schema: $ref: '#/components/schemas/Incident' '401': description: Unauthorized '403': description: User does not have "Manage incidents" access to incident's source object '404': description: Incident with given ID does not exist '409': description: Incident is closed and cannot be modified security: - BearerAuth: [] tags: - Incidents /v1/incidents/{incident-id}/activity: get: operationId: getIncidentActivity summary: Get Incident Activity Log description: Retrieve incident activity log, newest first. parameters: - name: incident-id in: path required: true schema: type: integer responses: '200': description: Successful retrieval of activity log. content: application/json: schema: type: array items: $ref: '#/components/schemas/IncidentActivityEntry' '401': description: Unauthorized '403': description: User does not have read access to incident's source object '404': description: Incident with given ID does not exist security: - BearerAuth: [] tags: - Incidents /v1/asset-management-schema: get: operationId: getAssetManagementSchema tags: - Asset Management Schema summary: Get asset management schema description: Retrieve all asset attribute definitions that make up the asset management schema. Available to any authenticated user. responses: '200': description: Asset management schema. content: application/json: schema: type: object properties: attributes: type: array items: $ref: '#/components/schemas/AssetAttribute' '401': description: Unauthorized. security: - BearerAuth: [] post: operationId: createAssetAttribute tags: - Asset Management Schema summary: Create a new asset attribute description: Create a new asset attribute definition. Requires "Manage asset management schema" system access right. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetAttribute' responses: '201': description: Asset attribute created successfully. content: application/json: schema: $ref: '#/components/schemas/AssetAttribute' '400': description: Invalid request (missing name, or name does not match the required format). '401': description: Unauthorized. '403': description: Access denied. '409': description: An asset attribute with the same name already exists. '500': description: Internal server error. security: - BearerAuth: [] /v1/asset-management-schema/{attribute-name}: get: operationId: getAssetAttribute tags: - Asset Management Schema summary: Get asset attribute details description: Retrieve a single asset attribute definition by name. Available to any authenticated user. parameters: - name: attribute-name in: path required: true schema: type: string description: Asset attribute name. responses: '200': description: Asset attribute details. content: application/json: schema: $ref: '#/components/schemas/AssetAttribute' '400': description: Invalid attribute name. '401': description: Unauthorized. '404': description: Asset attribute not found. security: - BearerAuth: [] put: operationId: updateAssetAttribute tags: - Asset Management Schema summary: Update an asset attribute description: Update an existing asset attribute definition. Only the fields present in the request body are modified (merge-patch semantics); the attribute name itself cannot be changed. Requires "Manage asset management schema" system access right. parameters: - name: attribute-name in: path required: true schema: type: string description: Asset attribute name. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetAttribute' responses: '200': description: Asset attribute updated successfully. content: application/json: schema: $ref: '#/components/schemas/AssetAttribute' '400': description: Invalid request. '401': description: Unauthorized. '403': description: Access denied. '404': description: Asset attribute not found. '500': description: Internal server error. security: - BearerAuth: [] delete: operationId: deleteAssetAttribute tags: - Asset Management Schema summary: Delete an asset attribute description: Delete an asset attribute definition. All property values stored for this attribute on existing assets are also removed. Requires "Manage asset management schema" system access right. parameters: - name: attribute-name in: path required: true schema: type: string description: Asset attribute name. responses: '204': description: Asset attribute deleted successfully. '400': description: Invalid attribute name. '401': description: Unauthorized. '403': description: Access denied. '404': description: Asset attribute not found. '500': description: Internal server error. security: - BearerAuth: [] /v1/cloud-connectors: get: operationId: listCloudConnectors summary: List cloud connectors description: Retrieve a list of all available cloud connector names. Cloud connectors are provided by server modules and referenced by name when configuring cloud domain objects. responses: '200': description: Cloud connectors retrieved successfully content: application/json: schema: type: array items: type: string security: - BearerAuth: [] tags: - Cloud Connectors /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: [] post: operationId: createImage tags: - Image Library summary: Create a library image description: >- Create a new image library entry. The request body must be the raw image bytes and the Content-Type header becomes the stored MIME type. The image name is passed as the "name" query parameter and is required. Requires the MANAGE_IMAGE_LIB system access right. parameters: - name: name in: query required: true schema: type: string description: Image display name. - name: category in: query required: false schema: type: string default: Default description: Image category (defaults to "Default"). requestBody: required: true content: image/png: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/svg+xml: schema: type: string format: binary application/octet-stream: schema: type: string format: binary responses: '201': description: Image created. content: application/json: schema: $ref: '#/components/schemas/LibraryImage' '400': description: Missing name, empty body, or invalid parameters. '401': description: Unauthorized. '403': description: Insufficient access rights. '500': description: Database or filesystem failure. 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: [] put: operationId: updateImage tags: - Image Library summary: Update a library image description: >- Update an existing image library entry. If the request body is non-empty the binary data is replaced and the stored MIME type is taken from the Content-Type header. The "name" and "category" query parameters, if present, update the corresponding metadata fields; when absent the existing values are retained. Protected images cannot be modified. Requires the MANAGE_IMAGE_LIB system access right. parameters: - name: guid in: path required: true schema: type: string format: uuid description: Image GUID. - name: name in: query required: false schema: type: string description: New image display name. - name: category in: query required: false schema: type: string description: New image category. requestBody: required: false content: image/png: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/svg+xml: schema: type: string format: binary application/octet-stream: schema: type: string format: binary responses: '200': description: Image updated. content: application/json: schema: $ref: '#/components/schemas/LibraryImage' '400': description: Invalid GUID. '401': description: Unauthorized. '403': description: Insufficient access rights or image is protected. '404': description: Image not found. '500': description: Database or filesystem failure. security: - BearerAuth: [] delete: operationId: deleteImage tags: - Image Library summary: Delete a library image description: >- Remove an image library entry and its backing file. Protected images cannot be deleted. Requires the MANAGE_IMAGE_LIB system access right. parameters: - name: guid in: path required: true schema: type: string format: uuid description: Image GUID. responses: '204': description: Image deleted. '400': description: Invalid GUID. '401': description: Unauthorized. '403': description: Insufficient access rights or image is protected. '404': description: Image not found. '500': description: Database failure. 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. '403': description: User does not have read access to the specified root object. '404': description: Specified root object does not exist. 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) '400': description: Invalid or missing rootObjectId / tableId. '401': description: Unauthorized. '403': description: Access denied. content: application/json: schema: $ref: '#/components/schemas/TableQueryError' '500': description: Query execution failed. content: application/json: schema: $ref: '#/components/schemas/TableQueryError' 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. '500': description: | Internal error - credentials were accepted but the access token could not be issued (for example, the user account was deleted while authentication was in progress). No token is returned and the login has to be repeated. 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 post: operationId: createObject summary: Create a new object description: | Create a new object. The caller must have CREATE access on the parent object (or on the entire network when creating a top-level node). The `class` field selects the object type and determines which additional fields are meaningful; fields not relevant to the selected class are ignored. After construction the same document is applied to the new object using merge-patch semantics (see `PATCH /v1/objects/{object-id}`), so common scalar properties such as `comments` and `alias` can be set in the same call. On success the full created object is returned and the `Location` header points to it. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectCreationRequest' responses: '201': description: Object created. Response body is the full object representation. headers: Location: description: Relative URL of the created object. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request, unknown object class, or invalid property value. '401': description: Unauthorized. '403': description: User does not have create access on the parent object, or node count license exceeded. '404': description: Parent object or referenced asset does not exist. '409': description: | Conflict — subnet overlaps an existing subnet, node IP address is already in use, or zone UIN is already taken. For a subnet overlap the response body contains a `conflictingObjects` array with the identifiers of the conflicting objects. '500': description: Object creation failed (internal error). 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 patch: operationId: updateObjectProperties summary: Update common object properties description: | Update common scalar properties on any NetObj. Request body uses JSON merge-patch semantics (RFC 7396) — fields present in the body are updated, fields omitted are left untouched, and explicit `null` clears the field. Returns the updated object in the same shape as `GET /v1/objects/{object-id}`. Class-specific property groups (snmp, agent, polling, etc.) are exposed as separate sub-resources. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object description: Merge-patch document with any subset of the listed properties. additionalProperties: false properties: name: type: string description: Object name (control characters are replaced with spaces). alias: type: string nullable: true description: Object alias. `null` or empty string clears the alias. nameOnMap: type: string nullable: true description: Display name used on network maps. `null` clears the override. comments: type: string nullable: true description: Free-form object comments. `null` or empty string clears them. category: type: integer nullable: true description: Object category ID. `null` or `0` clears the category. mapImage: type: string format: uuid nullable: true description: Image library UUID for the object on maps. `null` clears the image. drilldownObjectId: type: integer nullable: true description: ID of the object opened on drill-down. `null` or `0` clears the link. macAddress: type: string description: >- Interface only. MAC address in any accepted textual notation. Allowed only for manually created interfaces; rejected otherwise. requiredPollCount: type: integer description: Interface only. Number of consecutive polls required to change status. expectedState: type: integer description: >- Interface only. Expected interface state (0 = UP, 1 = DOWN, 2 = IGNORE, 3 = AUTO). peer: type: integer nullable: true description: >- Interface only. ID of the peer interface to link to. Establishes a manual bidirectional peer link (any previous peer on either side is cleared) and requires modify access on the peer interface. `null` or `0` clears the current peer. responses: '200': description: Object updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body or invalid property value. '401': description: Unauthorized '403': description: User does not have modify access to the object (or to the peer interface) '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/location: patch: operationId: updateObjectLocation summary: Update object geo location and postal address description: | Update the object's geo location and/or postal address. Body uses JSON merge-patch semantics — present fields are applied, omitted fields are left alone. Setting `geoLocation` to `null` clears the location (type becomes UNSET); setting `postalAddress` to `null` clears every postal field. Updating `geoLocation` also queues an entry in the object's geo-location history. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object additionalProperties: false properties: geoLocation: type: object nullable: true additionalProperties: false properties: type: type: integer description: 0=unset, 1=manual, 2=GPS, 3=network. latitude: type: number longitude: type: number accuracy: type: integer timestamp: type: integer description: Seconds since epoch. postalAddress: type: object nullable: true additionalProperties: false properties: country: type: string nullable: true region: type: string nullable: true city: type: string nullable: true district: type: string nullable: true streetAddress: type: string nullable: true postcode: type: string nullable: true responses: '200': description: Location updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body or invalid value. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/status-calculation: patch: operationId: updateObjectStatusCalculation summary: Update object status calculation/propagation parameters description: | Update the algorithms and thresholds used to derive the object's compound status from its children, and to propagate that status upward. Merge-patch semantics: any subset of fields can be sent; omitted fields are unchanged. The four-element `translation` and `thresholds` arrays must be sent as complete four-element arrays. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object additionalProperties: false properties: calcAlg: type: integer description: Status calculation algorithm. propAlg: type: integer description: Status propagation algorithm. fixedStatus: type: integer description: Fixed status value used with the "fixed" propagation algorithm. shift: type: integer description: Status shift used with the "relative" propagation algorithm. singleThreshold: type: integer description: Single percentage threshold used with the "single threshold" calc algorithm. translation: type: array description: Four-element status translation table (used with the "translated" propagation algorithm). minItems: 4 maxItems: 4 items: type: integer thresholds: type: array description: Four-element percentage thresholds (used with the "multiple thresholds" calc algorithm). minItems: 4 maxItems: 4 items: type: integer responses: '200': description: Status calculation updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body or invalid value. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/access-rights: get: operationId: getObjectAccessRights summary: Get object access control list description: | Return the object's directly assigned access control list and the flag controlling whether access rights are inherited from parent objects. Requires read access to the object. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Object access rights. content: application/json: schema: $ref: '#/components/schemas/ObjectAccessRights' '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects put: operationId: updateObjectAccessRights summary: Replace object access control list description: | Replace the object's directly assigned access control list and set the inherited-rights flag. This is a full replacement: any user or group not present in `accessList` loses its directly assigned rights on the object. Both members are optional; an omitted member leaves the current value unchanged. Requires both modify and access-control rights on the object. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectAccessRights' responses: '200': description: Access rights updated; the resulting access control list is returned. content: application/json: schema: $ref: '#/components/schemas/ObjectAccessRights' '400': description: Malformed request body or invalid access list '401': description: Unauthorized '403': description: User does not have modify and access-control rights on the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/polling: get: operationId: getObjectPolling summary: Get node polling configuration description: | Return the node's polling settings (the same shape accepted by the matching PATCH). This property group applies to Node objects only; requesting it for any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Polling configuration. content: application/json: schema: $ref: '#/components/schemas/PollingConfig' '400': description: Property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects patch: operationId: updateObjectPolling summary: Update node polling configuration description: | Update the node's polling settings: poller node, required poll count for status change, expected capabilities bitmask, and the per-protocol / per-poll-type disable flags. Merge-patch semantics: any subset of fields can be sent; omitted fields are left unchanged. Within the `flags` object only the named booleans that are present are modified; the rest are preserved. This property group applies to Node objects only; sending it to any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PollingConfig' responses: '200': description: Polling configuration updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body, invalid value, or property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/auto-bind: patch: operationId: updateObjectAutoBind summary: Update object auto-bind configuration description: | Update the auto-bind filters of an auto-bind-capable object (Container, Collector, Circuit, Cluster, NetworkMap, Template, Dashboard, BusinessService and business service prototype). Each object supports up to two filter slots; entries in the `autoBindFilters` array are applied positionally to slots 0, 1, … Within each entry omitted keys are left unchanged; a `null` or omitted `source` clears that slot's filter script. Filter scripts are compiled and validated by default; a compilation failure returns 400 with a `diagnostic` object. Pass `?validate=false` to store work-in-progress or intentionally broken scripts (matches the NXCP "always store" behavior). This property group applies only to auto-bind-capable object classes; sending it to any other class returns 400. parameters: - name: object-id in: path required: true schema: type: integer - name: validate in: query required: false description: When false, skip compilation of filter scripts. schema: type: boolean default: true requestBody: required: true content: application/json: schema: type: object additionalProperties: false properties: autoBindFilters: type: array description: Per-slot auto-bind filter configuration, applied positionally. maxItems: 2 items: type: object additionalProperties: false properties: autoBind: type: boolean description: Automatically bind matching objects. autoUnbind: type: boolean description: Automatically unbind objects that no longer match (only effective when autoBind is enabled). source: type: string nullable: true description: NXSL filter script source; null clears the slot. responses: '200': description: Auto-bind configuration updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body, filter script compilation failure, or property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/snmp: get: operationId: getObjectSnmpConfig summary: Get node SNMP communication configuration description: | Return the node's SNMP communication settings (the same shape accepted by the matching PATCH). Credential passwords (`authPassword`, `privPassword`, and their `trap` counterparts) are included only when the caller has modify or read-credentials access to the object. This property group applies to Node objects only; requesting it for any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: SNMP communication configuration. content: application/json: schema: $ref: '#/components/schemas/SnmpConfig' '400': description: Property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects patch: operationId: updateObjectSnmpConfig summary: Update node SNMP communication configuration description: | Update the node's SNMP communication settings: protocol version, UDP port, proxy node, codepage, the "prevent automatic SNMP configuration changes" lock, the polling credentials, and (optionally) separate SNMP trap reception credentials. Merge-patch semantics: any subset of fields can be sent; omitted fields are left unchanged. `authName` holds the community string for SNMP v1/v2c and the USM user name for SNMP v3. When `version` is present it is applied first (so `authName` is stored in the correct slot) and is clamped up to the server-wide minimum SNMP version. The v3 `authMethod`, `privMethod`, `authPassword` and `privPassword` fields are only meaningful for SNMP v3. The `trap` object configures separate credentials for received SNMP traps and is itself merge-patched (creating the trap credentials if they did not exist yet); sending `trap: null` reverts to using the polling credentials. `authPassword` and `privPassword` are write-only and are never returned by GET unless sensitive data is explicitly requested. This property group applies to Node objects only; sending it to any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SnmpConfig' responses: '200': description: SNMP configuration updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body, invalid value, or property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/agent: get: operationId: getObjectAgentConfig summary: Get node agent communication configuration description: | Return the node's NetXMS agent communication settings (the same shape accepted by the matching PATCH). The `sharedSecret` is included only when the caller has modify or read-credentials access to the object. This property group applies to Node objects only; requesting it for any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Agent communication configuration. content: application/json: schema: $ref: '#/components/schemas/AgentConfig' '400': description: Property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects patch: operationId: updateObjectAgentConfig summary: Update node agent communication configuration description: | Update the node's NetXMS agent communication settings: TCP port, proxy node, shared secret, the force-encryption and agent-over-tunnel-only flags, the agent DCI cache mode and the protocol compression mode. Merge-patch semantics: any subset of fields can be sent; omitted fields are left unchanged. `sharedSecret` is write-only and is never returned by GET unless sensitive data is explicitly requested. This property group applies to Node objects only; sending it to any other object class returns 400. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentConfig' responses: '200': description: Agent configuration updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body, invalid value, or property group not applicable to object class. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/custom-attributes: get: operationId: getObjectCustomAttributes summary: Get object custom attributes description: | Retrieve the object's custom attributes as an array. Each element carries the attribute name, value, flags and the source object. This is the same representation that is embedded as the `customAttributes` array in the full object document. Inherited attributes are included; the `sourceObject` field identifies the object an inherited attribute originates from (0 when the attribute is defined directly on this object). parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Array of custom attributes. content: application/json: schema: type: array items: $ref: '#/components/schemas/CustomAttribute' example: - name: rack value: A12 flags: inheritable: false redefined: false conflict: false sourceObject: 0 '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/custom-attributes/{name}: put: operationId: updateObjectCustomAttribute summary: Create or update a single custom attribute description: | Upsert a single custom attribute identified by name. The name is taken from the URL path (URL-encoded). It must be 1-127 characters, must not contain a slash or any control character; spaces, dots, dashes, colons and unicode are allowed. parameters: - name: object-id in: path required: true schema: type: integer - name: name in: path required: true schema: type: string description: Custom attribute name (URL-encoded). requestBody: required: true content: application/json: schema: type: object properties: value: type: string nullable: true description: Attribute value. Null or absent is treated as an empty string. inheritable: type: boolean description: Whether the attribute is inherited by child objects. Defaults to false. responses: '200': description: Attribute created or updated. content: application/json: schema: type: object properties: name: type: string value: type: string inheritable: type: boolean '400': description: Invalid attribute name or request body. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects delete: operationId: deleteObjectCustomAttribute summary: Delete a single custom attribute description: | Remove a custom attribute by name. Idempotent — deleting an attribute that does not exist still returns 204. parameters: - name: object-id in: path required: true schema: type: integer - name: name in: path required: true schema: type: string description: Custom attribute name (URL-encoded). responses: '204': description: Attribute deleted (or was already absent). '400': description: Invalid attribute name. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/asset-properties: get: operationId: getObjectAssetProperties summary: Get asset properties description: | Retrieve the asset object's properties as a JSON object mapping attribute name to value. This is the same representation embedded as the `properties` object in the full asset document. The target object must be an asset. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Asset properties as a name/value map. content: application/json: schema: type: object additionalProperties: type: string example: vendor: Cisco model: Catalyst 2960 serial: FOC1234X56Y '400': description: Object is not an asset '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/asset-properties/{name}: put: operationId: updateObjectAssetProperty summary: Create or update a single asset property description: | Upsert a single asset property identified by name. The name is taken from the URL path (URL-encoded). The attribute name must be defined in the asset management schema and the value is validated against that schema (data type, range, enum, etc.). The target object must be an asset. parameters: - name: object-id in: path required: true schema: type: integer - name: name in: path required: true schema: type: string description: Asset property (attribute) name (URL-encoded). requestBody: required: true content: application/json: schema: type: object required: - value properties: value: type: string description: Property value. Validated against the asset management schema. responses: '200': description: Property created or updated. content: application/json: schema: type: object properties: name: type: string value: type: string '400': description: Object is not an asset, invalid request body, or value rejected by schema validation. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object does not exist, or attribute name is not defined in the asset management schema security: - BearerAuth: [] tags: - Objects delete: operationId: deleteObjectAssetProperty summary: Delete a single asset property description: | Remove an asset property by name. The target object must be an asset. Mandatory properties cannot be removed. parameters: - name: object-id in: path required: true schema: type: integer - name: name in: path required: true schema: type: string description: Asset property (attribute) name (URL-encoded). responses: '204': description: Property deleted. '400': description: Object is not an asset, or the property is mandatory and cannot be deleted. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object does not exist, or the property is not set on this asset security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/responsible-users: get: operationId: getObjectResponsibleUsers summary: Get object responsible users description: | Retrieve the object's own responsible users (users inherited from parent objects are not included). Each entry pairs a user or group ID with its tag. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Array of responsible users. content: application/json: schema: type: array items: type: object properties: userId: type: integer tag: type: string '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/responsible-users/{user-id}: put: operationId: updateObjectResponsibleUser summary: Add or update a responsible user description: | Set the tag for a single responsible user or group. If the user is not yet responsible for the object it is added; otherwise its tag is updated. The user or group must exist. An absent or null tag is treated as an empty string. parameters: - name: object-id in: path required: true schema: type: integer - name: user-id in: path required: true schema: type: integer description: User or group ID. requestBody: required: false content: application/json: schema: type: object properties: tag: type: string nullable: true description: Responsible user tag (max 31 characters). Null or absent is treated as empty. responses: '200': description: Responsible user added or updated. content: application/json: schema: type: object properties: userId: type: integer tag: type: string '400': description: User or group does not exist, or tag is too long. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects delete: operationId: deleteObjectResponsibleUser summary: Remove a responsible user description: | Remove a user or group from the object's responsible users. Idempotent — removing a user that is not responsible still returns 204. parameters: - name: object-id in: path required: true schema: type: integer - name: user-id in: path required: true schema: type: integer description: User or group ID. responses: '204': description: Responsible user removed (or was already absent). '400': description: Invalid user ID. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/dashboard: get: operationId: getObjectDashboard summary: Get dashboard content description: | Return the content of a dashboard or dashboard template object: the column count, display priority, and the element (widget) layout. Requires read access. Applies only to objects of class `Dashboard` or `DashboardTemplate`. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Dashboard content. content: application/json: schema: $ref: '#/components/schemas/DashboardContent' '400': description: Object is not a dashboard or dashboard template '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects put: operationId: updateObjectDashboard summary: Replace dashboard content description: | Replace the content of a dashboard or dashboard template object. The `elements` array, when present, fully replaces the element (widget) layout; an element without a `guid` is assigned a new one. Only dashboard content fields are applied — other object properties are left untouched. `displayPriority` and `forcedContextObjectId` apply to plain dashboards only and are ignored for dashboard templates. Requires modify access and applies only to objects of class `Dashboard` or `DashboardTemplate`. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DashboardContent' responses: '200': description: Dashboard content updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Object is not a dashboard, or the request body is malformed '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/map: get: operationId: getObjectNetworkMap summary: Get network map content description: | Return the content of a network map object: layout settings, link defaults, background, and the element and link layout. Requires read access. Applies only to objects of class `NetworkMap`. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Network map content. content: application/json: schema: $ref: '#/components/schemas/NetworkMapContent' '400': description: Object is not a network map '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects put: operationId: updateObjectNetworkMap summary: Replace network map content description: | Replace the content of a network map object. The `elements` and `links` arrays, when present, fully replace the map layout. Only network map content fields are applied — other object properties are left untouched. Requires modify access and applies only to objects of class `NetworkMap`. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NetworkMapContent' responses: '200': description: Network map content updated; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Object is not a network map, or the request body is malformed '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/dashboards: put: operationId: updateObjectDashboards summary: Replace associated dashboards description: | Replace the full list of dashboards and network maps associated with the object. The body is a JSON array of object IDs; the previous list is replaced entirely. An empty array clears all associations. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: array items: type: integer description: Object IDs of associated dashboards / network maps. responses: '200': description: Dashboard associations replaced; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Malformed request body (not a JSON array of integers). '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/trusted-objects: put: operationId: updateObjectTrustedObjects summary: Replace trusted objects description: | Replace the full list of trusted object IDs. The body is a JSON array of object IDs; the previous list is replaced entirely. An empty array clears the trust list. The list may not contain the object's own ID or references to non-existent objects. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: array items: type: integer description: Object IDs of trusted objects. responses: '200': description: Trusted objects replaced; full updated object returned. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: | Malformed request body, the list contains the object's own ID ("Cannot trust object itself"), or a referenced object does not exist ("Trusted object N not found"). '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/urls: get: operationId: getObjectUrls summary: Get object URLs description: Retrieve the list of URLs associated with the object. parameters: - name: object-id in: path required: true schema: type: integer responses: '200': description: Array of associated URLs. content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectUrl' '401': description: Unauthorized '403': description: User does not have read access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects post: operationId: createObjectUrl summary: Add an object URL description: | Add a new URL to the object. The server assigns the URL ID. The created resource is returned and its location is provided in the `Location` header. parameters: - name: object-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object required: - url properties: url: type: string description: The URL (1-2000 characters). description: type: string nullable: true description: Optional human-readable description (max 2000 characters). responses: '201': description: URL created. headers: Location: schema: type: string description: Path of the created URL resource. content: application/json: schema: $ref: '#/components/schemas/ObjectUrl' '400': description: Missing or invalid url/description. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/urls/{url-id}: put: operationId: updateObjectUrl summary: Update an object URL description: Update an existing associated URL identified by its ID. parameters: - name: object-id in: path required: true schema: type: integer - name: url-id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object required: - url properties: url: type: string description: The URL (1-2000 characters). description: type: string nullable: true description: Optional human-readable description (max 2000 characters). responses: '200': description: URL updated. content: application/json: schema: $ref: '#/components/schemas/ObjectUrl' '400': description: Missing or invalid url/description. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object or URL with given ID does not exist security: - BearerAuth: [] tags: - Objects delete: operationId: deleteObjectUrl summary: Delete an object URL description: Remove an associated URL identified by its ID. parameters: - name: object-id in: path required: true schema: type: integer - name: url-id in: path required: true schema: type: integer responses: '204': description: URL deleted. '400': description: Invalid URL ID. '401': description: Unauthorized '403': description: User does not have modify access to the object '404': description: Object or URL with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/children: get: operationId: getObjectChildren summary: Get full details of direct child objects description: Retrieve full details of all direct (non-recursive) child objects of the specified parent object. Children that the user does not have read access to are omitted. parameters: - name: object-id in: path required: true schema: type: integer description: Parent object ID - name: class in: query required: false schema: type: string description: Optional comma-separated list of object class names to filter children by (e.g. "Node,Container"). - name: filter in: query required: false schema: type: string description: Optional case-insensitive substring; only children whose name or alias contains this value are returned. responses: '200': description: Successful retrieval of direct child object details. content: application/json: schema: type: array items: $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}/children/{child-id}: put: operationId: bindObjectChild summary: Bind child object to parent description: Bind the object identified by child-id to the object identified by object-id as a parent. When the parent is a template the template is applied to the child. Requires modify access to both the parent and the child object. parameters: - name: object-id in: path required: true schema: type: integer description: Parent object ID - name: child-id in: path required: true schema: type: integer description: Child object ID - name: force in: query required: false schema: type: boolean description: When true, override a template exclusion group conflict by removing the conflicting template first. responses: '200': description: Child object bound successfully. Returns full details of the child object. content: application/json: schema: $ref: '#/components/schemas/ObjectDetails' '400': description: Invalid request or incompatible parent/child object classes '401': description: Unauthorized '403': description: User does not have modify access to parent or child object '404': description: Parent or child object with given ID does not exist '409': description: Binding would create a loop, or conflicts with a template from the same exclusion group '500': description: Errors occurred while copying data collection configuration from template security: - BearerAuth: [] tags: - Objects delete: operationId: unbindObjectChild summary: Unbind child object from parent description: Unbind the object identified by child-id from the object identified by object-id. Requires modify access to both the parent and the child object. parameters: - name: object-id in: path required: true schema: type: integer description: Parent object ID - name: child-id in: path required: true schema: type: integer description: Child object ID - name: remove-dci in: query required: false schema: type: boolean description: When true and unbinding a template from a data collection target, remove data collection items that were created from the template. responses: '204': description: Child object unbound successfully '400': description: Invalid request, or child object is not a direct child of the parent '401': description: Unauthorized '403': description: User does not have modify access to parent or child object '404': description: Parent or child 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 requestBody: required: true content: application/json: schema: type: object required: - command properties: command: type: string description: Command line to execute. Supports macro expansion; the command name is the first token, remaining tokens are passed as arguments. alarmId: type: integer description: Optional alarm ID used as context for macro expansion. Requires read access to the alarm. inputFields: type: object additionalProperties: type: string description: Optional map of input field values used for macro expansion. 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: - elementIndex properties: objectId: type: integer description: Context object ID for script execution. If omitted or 0, the dashboard object itself is used as context. 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 description: | Execute ad-hoc NXSL script provided in the request body within context of given object. Requires `OBJECT_ACCESS_EXECUTE_SCRIPT` on the 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 content: application/json: schema: type: object properties: result: description: Script result. When resultAsMap is true (or the script returns a hash map or array) this is a JSON object; otherwise the scalar result serialized as JSON. '400': description: Invalid arguments or script compilation error content: application/json: schema: type: object properties: diagnostic: type: object description: NXSL compilation diagnostic, present on compilation failure reason: type: string description: Failure reason '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). The server can serve data from one of three storage tiers: raw samples, hourly aggregates, or daily aggregates. The `tier` query parameter selects which tier to read from (default `auto`, which picks the densest tier whose point count fits within the server-side `DataCollection.Aggregation.MaxAutoSelectPoints` threshold). When the resolved tier is hourly or daily, each row carries pre-computed avg/min/max and a `sampleCount` of raw samples that contributed to the bucket. The `function` query parameter selects which value column(s) the server returns from the aggregate tables (`minmax` returns avg, min, and max in a single response for band rendering). 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: maxDataPoints in: query schema: type: integer description: | When the request resolves to the raw tier, perform on-the-fly bucketing into this many points and return avg/min/max per bucket. Ignored on hourly/daily tier reads (those already serve pre-computed buckets). - name: historicalDataType in: query schema: type: integer default: 0 description: Type of historical data (0=processed, 1=raw, 2=raw and processed, 3=full table) - name: tier in: query schema: type: string enum: [auto, raw, hourly, daily] default: auto description: | Storage tier to read from. `auto` picks the densest tier whose point count fits the server-side auto-select threshold. Explicit tiers are downgraded to raw when the requested aggregate is not available for the DCI (e.g. string DCIs, or non-TSDB targets where the per-object aggregate table has not been created yet). The actually-served tier is reported in `tierServed`. - name: function in: query schema: type: string enum: [avg, min, max, minmax] default: avg description: | Aggregation function for hourly/daily tier reads. `minmax` returns `avg`, `min`, and `max` columns in a single response, suitable for band-graph rendering. Ignored when `tierServed` is `raw`. 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 tierServed: type: string enum: [raw, hourly, daily] description: | Storage tier the server actually read from. May differ from the requested tier (e.g. `auto` resolves to a concrete tier; an unsupported tier downgrades to `raw`). aggregated: type: boolean description: | `true` when rows carry aggregate columns (avg/min/max). Set when the response is served from a hourly/daily tier or when `maxDataPoints` triggered on-the-fly bucketing on the raw tier. bucketSize: type: integer description: | On-the-fly bucket size in milliseconds. Only present when the raw tier was bucketed via `maxDataPoints`. values: type: array items: type: object properties: timestamp: type: string format: date-time value: type: string description: | Raw data value (only when `tierServed=raw` and no `maxDataPoints` bucketing). avg: type: number description: | Average value of the bucket. Present for `function=avg` / `function=minmax` tier reads and for on-the-fly raw bucketing. min: type: number description: | Minimum value of the bucket. Present for `function=min` / `function=minmax` tier reads and for on-the-fly raw bucketing. max: type: number description: | Maximum value of the bucket. Present for `function=max` / `function=minmax` tier reads and for on-the-fly raw bucketing. sampleCount: type: integer description: | Number of raw samples that contributed to the bucket. Only populated when reading from a hourly/daily tier. '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}/data-collection/configuration: get: operationId: listDataCollectionItems summary: List data collection item definitions description: | Retrieve the definitions (configuration) of all data collection items (DCIs) configured on the object. This returns the DCI configuration, not collected values - use the `current-values` and `history` endpoints for data. Enumerations such as `origin`, `dataType`, `status` and threshold `function`/`condition` are returned as symbolic names. Requires `OBJECT_ACCESS_READ` and `OBJECT_ACCESS_READ_DC_CONFIG` on the object. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID responses: '200': description: DCI definitions retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/DataCollectionItem' '400': description: Object does not support data collection '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 post: operationId: createDataCollectionItem summary: Create data collection item description: | Create a new data collection item on the object. The DCI type is selected by the `type` property in the request body (`item` for a single-value DCI or `table` for a table DCI, default `item`). The server assigns the DCI id and returns the full created definition. Enumeration properties accept either symbolic names or raw numeric codes. parameters: - name: object-id in: path required: true schema: type: integer description: Object ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DataCollectionItem' responses: '201': description: Data collection item created headers: Location: schema: type: string description: URL of the created data collection item content: application/json: schema: $ref: '#/components/schemas/DataCollectionItem' '400': description: Invalid request body or object does not support data collection '401': description: Unauthorized '403': description: User does not have modify access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Data Collection /v1/objects/{object-id}/data-collection/configuration/{dci-id}: get: operationId: getDataCollectionItem summary: Get data collection item definition description: | Retrieve the definition of a single data collection item. Requires `OBJECT_ACCESS_READ` and `OBJECT_ACCESS_READ_DC_CONFIG` on the object. 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: Data collection item ID responses: '200': description: DCI definition retrieved successfully content: application/json: schema: $ref: '#/components/schemas/DataCollectionItem' '401': description: Unauthorized '403': description: User does not have read access to given object '404': description: Object or data collection item not found security: - BearerAuth: [] tags: - Data Collection patch: operationId: updateDataCollectionItem summary: Update data collection item description: | Apply a JSON merge-patch to an existing data collection item: only the properties present in the request body are changed. The `thresholds` array (and, for table DCIs, the `columns` array), when present, replaces the whole set; existing thresholds are matched by `id` so their runtime state is preserved. The `type` property, if supplied, must match the existing DCI type - it cannot be changed. 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: Data collection item ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DataCollectionItem' responses: '200': description: Data collection item updated content: application/json: schema: $ref: '#/components/schemas/DataCollectionItem' '400': description: Invalid request body or attempt to change DCI type '401': description: Unauthorized '403': description: User does not have modify access to given object or item '404': description: Object or data collection item not found security: - BearerAuth: [] tags: - Data Collection delete: operationId: deleteDataCollectionItem summary: Delete data collection item description: Remove a data collection item from the object. 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: Data collection item ID responses: '204': description: Data collection item deleted '401': description: Unauthorized '403': description: User does not have modify access to given object or item '404': description: Object or data collection item not found 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, immediately or on schedule description: | Without time fields, immediately changes object maintenance state according to the "maintenance" field. If "startTime" and/or "endTime" is provided, maintenance is scheduled instead by creating one-time scheduled tasks (visible in scheduled task list and cancellable via the scheduled tasks API): * startTime + endTime - schedule maintenance window (enter at startTime, leave at endTime); * startTime only - schedule maintenance entry, leave manually; * endTime only - schedule maintenance exit; combined with "maintenance": true the object enters maintenance immediately and leaves at endTime. If "schedule" is provided, a recurring maintenance window is scheduled instead: a recurrent scheduled task enters maintenance mode each time the cron expression matches, and maintenance mode is left automatically after "duration" minutes (required in this form). Other time fields are ignored in this form. Scheduling requires the "schedule object maintenance" system access right. 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 (ignored if startTime is provided) comments: type: string description: Optional maintenance comments (also set on created scheduled tasks) startTime: oneOf: - type: integer - type: string description: Scheduled maintenance start time - UNIX timestamp, ISO 8601 string, or relative time ("+30m", "now") endTime: oneOf: - type: integer - type: string description: Scheduled maintenance end time - UNIX timestamp, ISO 8601 string, or relative time ("+2h") schedule: type: string description: Cron expression for recurring maintenance window start ("minute hour day-of-month month day-of-week", e.g. "0 2 * * 0") duration: type: integer description: Recurring maintenance window duration in minutes (required together with "schedule") responses: '204': description: Maintenance mode changed or scheduled successfully '400': description: Invalid arguments '401': description: Unauthorized '403': description: User does not have control access to given object or scheduling rights '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: '204': 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}/wake-up: post: operationId: wakeUpObject summary: Send Wake-on-LAN packet description: >- Send Wake-on-LAN magic packet to the node bound to the given object. For an interface the packet is sent to the directed broadcast address of that interface's subnet using its MAC address. For a node the server picks the first interface with a valid unicast IPv4 address, preferring managed interfaces over unmanaged ones. parameters: - name: object-id in: path required: true schema: type: integer description: Node or interface object ID responses: '204': description: Wake-on-LAN packet sent '400': description: Object is not a node or interface, or has no interface suitable for Wake-on-LAN '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: Failed to send Wake-on-LAN packet 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}/arp-cache: get: operationId: getArpCache summary: Get node ARP cache description: >- Read the ARP cache of the given node. Entries are resolved against the object database where possible - the interface the entry was seen on and the node owning the IP address are reported by name when the caller has read access to them. Returns an empty entry list with a null timestamp when the ARP cache has never been collected for this node. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID - name: forceRead in: query required: false schema: type: boolean default: false description: >- Force a live read from the device instead of using the server's cached copy. A live read blocks for the duration of the agent or SNMP request and may time out on an unreachable node. responses: '200': description: ARP cache retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ArpCache' '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}/routing-table: get: operationId: getRoutingTable summary: Get node routing table description: >- Read the IP routing table of the given node. Returns an empty entry list with a null timestamp when the routing table has never been collected for this node. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID responses: '200': description: Routing table retrieved successfully content: application/json: schema: $ref: '#/components/schemas/RoutingTable' '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}/switch-forwarding-database: get: operationId: getSwitchForwardingDatabase summary: Get switch forwarding database description: >- Read the switch forwarding database (FDB) of the given node. Applicable to bridge-capable nodes. Returns an empty entry list with a null timestamp when the forwarding database has never been collected for this node. tags: - Objects parameters: - name: object-id in: path required: true schema: type: integer description: Node object ID responses: '200': description: Switch forwarding database retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SwitchForwardingDatabase' '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}/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}/chassis-layout: get: operationId: getChassisLayout summary: Get chassis layout description: >- Retrieve the complete layout of a chassis in a single call: chassis metadata and all placed component objects (nodes) with their placement geometry. Components are filtered by the requesting user's read access and only those carrying a placement configuration are returned. parameters: - name: object-id in: path required: true schema: type: integer description: Chassis object ID responses: '200': description: Chassis layout retrieved successfully content: application/json: schema: type: object properties: chassisId: type: integer description: Chassis object ID name: type: string description: Chassis name controllerId: type: integer description: ID of the controller node managing the chassis status: type: integer description: Chassis object status objects: type: array description: Placed component objects (nodes) with chassis placement items: type: object properties: id: type: integer description: Object ID objectClass: type: integer description: Object class code name: type: string description: Object name status: type: integer description: Object status placement: $ref: '#/components/schemas/ChassisPlacement' '400': description: Object ID is invalid or object is not a chassis '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}/rack-layout: get: operationId: getRackLayout summary: Get rack layout description: >- Retrieve the complete layout of a rack in a single call: rack metadata, passive elements, and all placed child objects (nodes and chassis) with their placement geometry. Placed objects are filtered by the requesting user's read access and only those with a valid rack position (>= 1) are returned. parameters: - name: object-id in: path required: true schema: type: integer description: Rack object ID responses: '200': description: Rack layout retrieved successfully content: application/json: schema: type: object properties: rackId: type: integer description: Rack object ID name: type: string description: Rack name height: type: integer description: Rack height in units topBottomNumbering: type: boolean description: True if rack units are numbered from top to bottom passiveElements: type: array description: Passive rack elements (patch panels, PDUs, organisers, fillers) items: type: object properties: id: type: integer name: type: string type: type: integer description: Element type (0=patch panel, 1=filler panel, 2=organiser, 3=PDU) position: type: integer height: type: integer orientation: type: integer description: Orientation (0=fill, 1=front, 2=rear) portCount: type: integer description: Number of ports (patch panels only) imageFront: type: string format: uuid imageRear: type: string format: uuid objects: type: array description: Placed child objects (nodes and chassis) with rack placement items: type: object properties: id: type: integer description: Object ID objectClass: type: integer description: Object class code name: type: string description: Object name status: type: integer description: Object status rackPosition: type: integer rackHeight: type: integer rackOrientation: type: integer description: Orientation (0=fill, 1=front, 2=rear) rackImageFront: type: string format: uuid rackImageRear: type: string format: uuid '400': description: Object ID is invalid or object is not a rack '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}/rack-layout/passive-elements: post: operationId: createRackPassiveElement summary: Create rack passive element description: >- Add a new passive element (patch panel, filler panel, organiser, or PDU) to a rack. The server assigns the element identifier. Requires MODIFY access to the rack object. parameters: - name: object-id in: path required: true schema: type: integer description: Rack object ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RackPassiveElement' responses: '201': description: Passive element created headers: Location: schema: type: string description: URL of the created passive element content: application/json: schema: $ref: '#/components/schemas/RackPassiveElement' '400': description: Invalid request body, object ID, or object is not a rack '401': description: Unauthorized '403': description: User does not have modify access to given object '404': description: Object with given ID does not exist security: - BearerAuth: [] tags: - Objects /v1/objects/{object-id}/rack-layout/passive-elements/{element-id}: patch: operationId: updateRackPassiveElement summary: Update rack passive element description: >- Update an existing passive element using JSON merge-patch semantics: only the fields present in the request body are changed. The element type is immutable. Requires MODIFY access to the rack object. parameters: - name: object-id in: path required: true schema: type: integer description: Rack object ID - name: element-id in: path required: true schema: type: integer description: Passive element ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RackPassiveElement' responses: '200': description: Passive element updated content: application/json: schema: $ref: '#/components/schemas/RackPassiveElement' '400': description: Invalid request body, object ID, or object is not a rack '401': description: Unauthorized '403': description: User does not have modify access to given object '404': description: Object or passive element with given ID does not exist security: - BearerAuth: [] tags: - Objects delete: operationId: deleteRackPassiveElement summary: Delete rack passive element description: >- Remove a passive element from a rack. Removing a patch panel also drops its physical link inventory. Requires MODIFY access to the rack object. parameters: - name: object-id in: path required: true schema: type: integer description: Rack object ID - name: element-id in: path required: true schema: type: integer description: Passive element ID responses: '204': description: Passive element deleted '400': description: Invalid object ID or object is not a rack '401': description: Unauthorized '403': description: User does not have modify access to given object '404': description: Object or passive element 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 recursively nested sub-tree of objects starting from the specified parent object. Each node carries its accessible children under a `children` property. parameters: - name: object-id in: path required: true schema: type: integer description: Parent object ID - name: class in: query schema: type: string description: Optional comma-separated list of object class names. If provided, only objects of the listed classes (and ancestors that lead to them) are returned. Unknown class names are ignored. - name: maxDepth in: query schema: type: integer default: 10 maximum: 100 description: Maximum tree depth to traverse. Values above 100 are capped at 100. responses: '200': description: Object sub-tree retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ObjectTreeNode' '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 required: - query properties: fields: type: array description: List of additional fields to be retrieved. items: type: string inputFields: type: object additionalProperties: type: string description: Map of user input fields (available in query script via global variable $INPUT). Keys are input field names, values are user-provided values. 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 rootObjectId: type: integer description: Optional root object ID to scope the query to a sub-tree. 0 (default) queries all objects. readAllFields: type: boolean description: If true, all object fields are made available to the query script (default false). 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 (including missing access right required by the task handler) '404': description: Referenced object not found '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/compile: post: operationId: compileScript summary: Compile script description: >- Compile an NXSL script to check its syntax without executing it. Returns whether compilation succeeded, the error location and message on failure, and any compilation warnings. requestBody: required: true content: application/json: schema: type: object required: - code properties: code: type: string description: NXSL source code to compile responses: '200': description: Script compiled (check the success field for the outcome) content: application/json: schema: type: object properties: success: type: boolean description: True if the script compiled without errors error: type: object description: Present only when success is false properties: lineNumber: type: integer description: Line number where the error was detected message: type: string description: Error description warnings: type: array description: Compilation warnings (may be present regardless of success) items: type: object properties: lineNumber: type: integer message: type: string '400': description: Missing or invalid code field '401': description: Unauthorized 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. Channels provided by chat bots cannot be 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 '409': description: Channel is provided by chat bot and cannot be updated 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 or provided by a chat bot. 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 or provided by chat bot 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. Channels provided by chat bots cannot be renamed. 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, or channel is provided by chat bot 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/event-forwarders: get: operationId: listEventForwarders summary: List event forwarders description: Retrieve a list of all event forwarders configured on the server. responses: '200': description: Event forwarders retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/EventForwarder' '403': description: Access denied security: - BearerAuth: [] tags: - Event Forwarders post: operationId: createEventForwarder summary: Create an event forwarder description: Create a new event forwarder with the specified driver and configuration. requestBody: required: true content: application/json: schema: type: object required: - name - driverName properties: name: type: string description: Unique event forwarder name description: type: string description: Event forwarder description driverName: type: string description: Event forwarder driver name configuration: type: object additionalProperties: true description: Driver-specific configuration object responses: '201': description: Event forwarder created successfully content: application/json: schema: $ref: '#/components/schemas/EventForwarder' '400': description: Invalid or missing required fields '403': description: Access denied '409': description: Event forwarder with this name already exists security: - BearerAuth: [] tags: - Event Forwarders /v1/event-forwarders/{forwarder-name}: get: operationId: getEventForwarder summary: Get event forwarder details description: Retrieve details of a specific event forwarder. parameters: - name: forwarder-name in: path required: true schema: type: string description: Event forwarder name responses: '200': description: Event forwarder details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EventForwarder' '403': description: Access denied '404': description: Event forwarder not found security: - BearerAuth: [] tags: - Event Forwarders put: operationId: updateEventForwarder summary: Update an event forwarder description: Update an existing event forwarder. Only provided fields are updated. parameters: - name: forwarder-name in: path required: true schema: type: string description: Event forwarder name requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: Event forwarder description driverName: type: string description: Event forwarder driver name configuration: type: object additionalProperties: true description: Driver-specific configuration object responses: '200': description: Event forwarder updated successfully content: application/json: schema: $ref: '#/components/schemas/EventForwarder' '400': description: Invalid request '403': description: Access denied '404': description: Event forwarder not found security: - BearerAuth: [] tags: - Event Forwarders delete: operationId: deleteEventForwarder summary: Delete an event forwarder description: Delete an event forwarder. Fails if the forwarder is used in server actions. parameters: - name: forwarder-name in: path required: true schema: type: string description: Event forwarder name responses: '204': description: Event forwarder deleted successfully '403': description: Access denied '404': description: Event forwarder not found '409': description: Event forwarder is used in server actions security: - BearerAuth: [] tags: - Event Forwarders /v1/event-forwarders/{forwarder-name}/rename: post: operationId: renameEventForwarder summary: Rename an event forwarder description: Rename an existing event forwarder. Also updates references in server actions. parameters: - name: forwarder-name in: path required: true schema: type: string description: Current event forwarder name requestBody: required: true content: application/json: schema: type: object required: - newName properties: newName: type: string description: New event forwarder name responses: '200': description: Event forwarder renamed successfully '400': description: Invalid or missing new name '403': description: Access denied '404': description: Event forwarder not found '409': description: Event forwarder with the new name already exists security: - BearerAuth: [] tags: - Event Forwarders /v1/event-forwarder-drivers: get: operationId: listEventForwarderDrivers summary: List event forwarder drivers description: Retrieve a list of all registered event forwarder driver names. responses: '200': description: Event forwarder drivers retrieved successfully content: application/json: schema: type: array items: type: string '403': description: Access denied security: - BearerAuth: [] tags: - Event Forwarders /v1/chat-bots: get: operationId: listChatBots summary: List chat bots description: Retrieve a list of all chat bots configured on the server. responses: '200': description: Chat bots retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/ChatBot' '403': description: Access denied security: - BearerAuth: [] tags: - Chat Bots post: operationId: createChatBot summary: Create a chat bot description: Create a new chat bot with the specified driver and configuration. A notification channel with the same name is registered automatically. requestBody: required: true content: application/json: schema: type: object required: - name - driverName properties: name: type: string description: Unique chat bot name description: type: string description: Chat bot description driverName: type: string description: Chat bot driver name configuration: type: string description: Driver-specific configuration text idleTimeout: type: integer description: Session idle timeout in seconds providerSlot: type: string description: AI provider slot for bot sessions (empty for default) userMappings: type: array description: Platform peer ID to NetXMS user ID mappings items: type: object properties: peerId: type: string description: Platform-specific peer ID userId: type: integer description: NetXMS user ID responses: '201': description: Chat bot created successfully content: application/json: schema: $ref: '#/components/schemas/ChatBot' '400': description: Invalid or missing required fields '403': description: Access denied '409': description: Chat bot with this name already exists security: - BearerAuth: [] tags: - Chat Bots /v1/chat-bots/{bot-name}: get: operationId: getChatBot summary: Get chat bot details description: Retrieve details of a specific chat bot. parameters: - name: bot-name in: path required: true schema: type: string description: Chat bot name responses: '200': description: Chat bot details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ChatBot' '403': description: Access denied '404': description: Chat bot not found security: - BearerAuth: [] tags: - Chat Bots put: operationId: updateChatBot summary: Update a chat bot description: Update an existing chat bot. Only provided fields are updated. parameters: - name: bot-name in: path required: true schema: type: string description: Chat bot name requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: Chat bot description driverName: type: string description: Chat bot driver name configuration: type: string description: Driver-specific configuration text idleTimeout: type: integer description: Session idle timeout in seconds providerSlot: type: string description: AI provider slot for bot sessions (empty for default) userMappings: type: array description: Platform peer ID to NetXMS user ID mappings items: type: object properties: peerId: type: string description: Platform-specific peer ID userId: type: integer description: NetXMS user ID responses: '200': description: Chat bot updated successfully content: application/json: schema: $ref: '#/components/schemas/ChatBot' '400': description: Invalid request '403': description: Access denied '404': description: Chat bot not found security: - BearerAuth: [] tags: - Chat Bots delete: operationId: deleteChatBot summary: Delete a chat bot description: Delete a chat bot together with its automatically registered notification channel. parameters: - name: bot-name in: path required: true schema: type: string description: Chat bot name responses: '204': description: Chat bot deleted successfully '403': description: Access denied '404': description: Chat bot not found security: - BearerAuth: [] tags: - Chat Bots /v1/chat-bots/{bot-name}/rename: post: operationId: renameChatBot summary: Rename a chat bot description: Rename an existing chat bot. Also renames the automatically registered notification channel and updates references in server actions. parameters: - name: bot-name in: path required: true schema: type: string description: Current chat bot name requestBody: required: true content: application/json: schema: type: object required: - newName properties: newName: type: string description: New chat bot name responses: '200': description: Chat bot renamed successfully '400': description: Invalid or missing new name '403': description: Access denied '404': description: Chat bot not found '409': description: Chat bot with the new name already exists security: - BearerAuth: [] tags: - Chat Bots /v1/chat-bot-drivers: get: operationId: listChatBotDrivers summary: List chat bot drivers description: Retrieve a list of all registered chat bot driver names. responses: '200': description: Chat bot drivers retrieved successfully content: application/json: schema: type: array items: type: string '403': description: Access denied security: - BearerAuth: [] tags: - Chat Bots /v1/log-parsers/{parser-type}: parameters: - name: parser-type in: path required: true description: Log parser to manage. schema: type: string enum: - syslog - windows-event - opentelemetry get: operationId: getLogParser summary: Get log parser configuration description: | Retrieve the configuration document for the given server-side log parser (syslog, Windows event log, or OpenTelemetry log). The configuration is an XML document returned verbatim in the `content` field; an empty string means no parser rules are configured. responses: '200': description: Log parser configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/LogParser' '403': description: Access denied (requires "Server configuration" access right) '404': description: Unknown parser type security: - BearerAuth: [] tags: - Log Parsers put: operationId: updateLogParser summary: Update log parser configuration description: | Replace the configuration document for the given server-side log parser. The body must contain a `content` field holding a well-formed XML document with a `` root element (an empty string clears the parser). Saving the configuration reinitializes the live parser immediately. requestBody: required: true content: application/json: schema: type: object required: - content properties: content: type: string description: Parser configuration as an XML document, or an empty string to clear it. responses: '204': description: Log parser configuration updated successfully '400': description: Missing/invalid content field or malformed parser XML '403': description: Access denied (requires "Server configuration" access right) '404': description: Unknown parser type '500': description: Failed to store configuration security: - BearerAuth: [] tags: - Log Parsers /v1/logs: get: operationId: getLogs summary: Get available logs description: | Retrieve the list of logs that can be queried through the API. Only logs the calling user has access to are returned. Logs contributed by server modules are included. responses: '200': description: Log list retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/LogSummary' security: - BearerAuth: [] tags: - Logs /v1/logs/{log-name}: parameters: - name: log-name in: path required: true description: Log name as returned by `GET /v1/logs` (case insensitive; the underlying database table name is also accepted). schema: type: string get: operationId: getLogDetails summary: Get log schema description: | Retrieve log definition including the list of columns with their data types. Columns marked with `detail` are not included in query results and are only returned when reading a single record. Zone columns are omitted when zoning is disabled. responses: '200': description: Log definition retrieved successfully content: application/json: schema: $ref: '#/components/schemas/LogDetails' '403': description: Access denied (log has an access right requirement not held by the user) '404': description: Unknown log name security: - BearerAuth: [] tags: - Logs /v1/logs/{log-name}/query: parameters: - name: log-name in: path required: true description: Log name as returned by `GET /v1/logs`. schema: type: string post: operationId: queryLog summary: Query log description: | Execute a log query and return the requested page of records. Each request is self-contained - there is no server-side query state to open or close. All column filters are combined with AND; use a filter of type `set` to combine conditions on the same column with OR. Filter and ordering column names are validated against the log definition. Numeric filter values for timestamp columns are UNIX timestamps (milliseconds for columns of millisecond resolution). A string value is parsed as a timestamp and accepts ISO 8601, a UNIX timestamp, a relative offset such as `-30m`, or `now`. Records are returned as objects keyed by column name, with values typed according to the column type: coded and integer columns as numbers, timestamps as ISO 8601 strings, everything else as strings. Detail columns are not included. Paging is implemented by re-executing the query and skipping records, so a large `offset` is expensive; `offset` + `limit` may not exceed 100000. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LogQueryRequest' responses: '200': description: Query executed successfully content: application/json: schema: $ref: '#/components/schemas/LogQueryResult' '400': description: Missing request body, invalid filter definition, or invalid offset/limit '403': description: Access denied (log has an access right requirement not held by the user) '404': description: Unknown log name '500': description: Database failure security: - BearerAuth: [] tags: - Logs /v1/logs/{log-name}/query-sql: parameters: - name: log-name in: path required: true description: Log name as returned by `GET /v1/logs`. schema: type: string post: operationId: getLogQuerySql summary: Get SQL for log query description: | Build and return the SQL statement that `POST /v1/logs/{log-name}/query` would execute for the same request body, without running it. Intended for troubleshooting and for building reports outside of NetXMS. The statement reflects the caller's object access constraints and includes the row limit `offset` + `limit`, because paging is done by executing the statement as is and then skipping the first `offset` records. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LogQueryRequest' responses: '200': description: SQL statement built successfully content: application/json: schema: type: object properties: query: type: string description: SQL statement in the syntax of the server's database engine '400': description: Missing request body, invalid filter definition, or invalid offset/limit '403': description: Access denied (log has an access right requirement not held by the user) '404': description: Unknown log name security: - BearerAuth: [] tags: - Logs /v1/logs/{log-name}/records/{record-id}: parameters: - name: log-name in: path required: true description: Log name as returned by `GET /v1/logs`. schema: type: string - name: record-id in: path required: true description: Value of the log's record ID column. schema: type: integer format: int64 get: operationId: getLogRecord summary: Get single log record description: | Retrieve a single log record by its record ID, including detail columns that are omitted from query results (such as event raw data or audit log old/new values). Values of columns of type `jsonDetails` are returned as parsed JSON documents when they contain valid JSON, and as strings otherwise. responses: '200': description: Record retrieved successfully content: application/json: schema: type: object additionalProperties: true description: Log record as an object keyed by column name. '400': description: Invalid record ID '403': description: Access denied (log has an access right requirement not held by the user) '404': description: Unknown log name or record not found '500': description: Database failure security: - BearerAuth: [] tags: - Logs /v1/snmp-mib: get: operationId: getMibRoot summary: Get MIB tree root description: Retrieve the synthetic root of the server's compiled SNMP MIB tree, including the list of immediate children (typically `ccitt(0)`, `iso(1)`, `joint-iso-ccitt(2)`). responses: '200': description: MIB root node retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MibNode' '401': description: Unauthorized '503': description: MIB tree is not loaded security: - BearerAuth: [] tags: - SNMP MIB /v1/snmp-mib/{oid}: get: operationId: getMibNode summary: Get MIB node by OID description: Retrieve the MIB node identified by the given OID, including its immediate children. The OID is a dotted numeric path with no leading dot (for example `1.3.6.1.2.1.1.1`). parameters: - name: oid in: path required: true schema: type: string description: Dotted numeric OID without a leading dot (e.g. `1.3.6.1.2.1.1.1`). responses: '200': description: MIB node retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MibNode' '400': description: Invalid OID '401': description: Unauthorized '404': description: No MIB object found with the given OID '503': description: MIB tree is not loaded security: - BearerAuth: [] tags: - SNMP MIB /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 post: operationId: createObjectTool summary: Create a new object tool description: | Create a new object tool. The server assigns the tool ID and GUID. Requires SYSTEM_ACCESS_MANAGE_TOOLS. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectToolWrite' responses: '201': description: Object tool created. content: application/json: schema: $ref: '#/components/schemas/ObjectToolDetails' '400': description: Missing or invalid request body, tool name, or tool type. '403': description: Insufficient access rights (SYSTEM_ACCESS_MANAGE_TOOLS required). '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. When the caller has SYSTEM_ACCESS_MANAGE_TOOLS rights the response additionally includes the `acl` and (for snmp-table / agent-list tools) `columns` fields. 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 put: operationId: updateObjectTool summary: Update an existing object tool description: | Whole-record replace of an existing object tool. Requires SYSTEM_ACCESS_MANAGE_TOOLS. The ACL, table columns, and input field definitions are all replaced by the values in the request body. parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ObjectToolWrite' responses: '200': description: Object tool updated. content: application/json: schema: $ref: '#/components/schemas/ObjectToolDetails' '400': description: Missing or invalid request body, tool name, or tool type. '403': description: Insufficient access rights (SYSTEM_ACCESS_MANAGE_TOOLS required). '404': description: Tool not found. '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools delete: operationId: deleteObjectTool summary: Delete an object tool description: | Delete an object tool along with its ACL, table columns and input field definitions. Requires SYSTEM_ACCESS_MANAGE_TOOLS. parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID responses: '204': description: Object tool deleted. '400': description: Invalid tool ID. '403': description: Insufficient access rights (SYSTEM_ACCESS_MANAGE_TOOLS required). '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools /v1/object-tools/{tool-id}/disable: post: operationId: disableObjectTool summary: Disable an object tool description: | Sets the `disabled` flag on the tool so that it is hidden from per-object tool lists and cannot be executed. Requires SYSTEM_ACCESS_MANAGE_TOOLS. parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID responses: '204': description: Object tool disabled. '400': description: Invalid tool ID. '403': description: Insufficient access rights (SYSTEM_ACCESS_MANAGE_TOOLS required). '500': description: Database failure. security: - BearerAuth: [] tags: - Object Tools /v1/object-tools/{tool-id}/enable: post: operationId: enableObjectTool summary: Enable an object tool description: | Clears the `disabled` flag on the tool. Requires SYSTEM_ACCESS_MANAGE_TOOLS. parameters: - name: tool-id in: path required: true schema: type: integer description: Object tool ID responses: '204': description: Object tool enabled. '400': description: Invalid tool ID. '403': description: Insufficient access rights (SYSTEM_ACCESS_MANAGE_TOOLS required). '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 (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 maskedFields: type: array items: type: string description: | Optional list of input field names whose values must be masked in the audit log and in user-visible context such as the result table title for table tools (typically password-type fields). Names not present in inputFields are ignored. 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 (command, file-download) - Tool is disabled - Incompatible object class for the tool type - SSH command target has no owning node (standalone access point, sensor without gateway) '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 (or on the owning node for SSH tools on interface/sensor/access point) - 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 content: application/json: schema: type: object description: Error body for server-script execution failure (other failures return no body). properties: reason: type: string description: Failure reason diagnostic: type: object description: NXSL diagnostic information, when 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-processing-policy: get: operationId: getEventProcessingPolicy summary: Get event processing policy description: | Retrieve the complete event processing policy as an ordered list of rules. The returned `version` value should be sent back unchanged in a subsequent update request to detect concurrent modifications (optimistic concurrency control). responses: '200': description: Event processing policy retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EventProcessingPolicy' '401': description: Unauthorized '403': description: User does not have EPP access right security: - BearerAuth: [] tags: - Event Processing Policy put: operationId: updateEventProcessingPolicy summary: Replace event processing policy description: | Replace the entire event processing policy with the supplied ordered list of rules. If `version` is present in the request body it must match the current policy version, otherwise the request is rejected with status 409 and the body contains the current `currentVersion`. If `version` is omitted the policy is replaced unconditionally. Each rule may be supplied either in the form produced by this API (object IDs and event codes as plain integers) or as a configuration export record (object/event references as objects carrying name and GUID); the latter form is resolved on import and any references that cannot be resolved are dropped, with details returned in the optional `warnings` field. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventProcessingPolicyUpdateRequest' responses: '200': description: Event processing policy updated successfully content: application/json: schema: $ref: '#/components/schemas/EventProcessingPolicyUpdateResult' '400': description: Invalid event processing policy data '401': description: Unauthorized '403': description: User does not have EPP access right '409': description: Version conflict - the policy was modified by another client content: application/json: schema: type: object properties: error: type: string currentVersion: type: integer description: Current policy version on the server '500': description: Database failure security: - BearerAuth: [] tags: - Event Processing Policy /v1/event-processing-policy/rules/{rule-guid}: get: operationId: getEventProcessingPolicyRule summary: Get event processing policy rule description: Retrieve a single event processing policy rule by its GUID. parameters: - name: rule-guid in: path required: true schema: type: string format: uuid description: Rule GUID responses: '200': description: Rule retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EventProcessingPolicyRule' '400': description: Invalid rule GUID '401': description: Unauthorized '403': description: User does not have EPP access right '404': description: Rule not found security: - BearerAuth: [] tags: - Event Processing Policy /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: $ref: '#/components/schemas/TableData' '400': description: Invalid request or invalid summary table ID '401': description: Unauthorized '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/TableQueryError' '500': description: Query execution failed content: application/json: schema: $ref: '#/components/schemas/TableQueryError' 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: $ref: '#/components/schemas/TableData' '400': description: Invalid request or missing table definition '401': description: Unauthorized '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/TableQueryError' '500': description: Query execution failed content: application/json: schema: $ref: '#/components/schemas/TableQueryError' 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. The operation is treated as a self-change when the target user-id is the currently authenticated user, and as an administrative reset otherwise. When self-changing, `oldPassword` is required so the current password can be verified; for an administrative reset `oldPassword` is not required. 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, missing oldPassword on self-change, 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/users/{user-id}/tokens: get: operationId: listUserAuthTokens summary: List user authentication tokens description: | List active authentication tokens issued for the user. The clear-text token value is never included - it is returned only by the response that issues the token. A user may list their own tokens; listing another user's tokens requires MANAGE_USERS access right. parameters: - name: user-id in: path required: true schema: type: integer description: User ID responses: '200': description: Tokens retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/AuthenticationToken' '400': description: Invalid user ID '401': description: Unauthorized '403': description: Access denied (not self and no MANAGE_USERS right) security: - BearerAuth: [] tags: - Users post: operationId: createUserAuthToken summary: Issue user authentication token description: | Issue a new authentication token for the user. The clear-text token value is returned in this response only - the server drops it as soon as the response is built, so it cannot be read back from a listing and a lost token has to be revoked and re-issued. A user may issue tokens for themselves; issuing tokens for another user 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/AuthenticationTokenCreateInput' responses: '201': description: Token issued successfully content: application/json: schema: $ref: '#/components/schemas/AuthenticationToken' '400': description: | Invalid user ID, missing/invalid validFor, singleUse requested together with persistent (single-use tokens are memory-only and require "persistent": false), a description longer than 127 characters, or a persistent token with an expiration time beyond 2038-01-19T03:14:07Z (neither fits the database columns) '401': description: Unauthorized '403': description: Access denied (not self and no MANAGE_USERS right) '404': description: User not found security: - BearerAuth: [] tags: - Users /v1/users/{user-id}/tokens/{token-id}: delete: operationId: revokeUserAuthToken summary: Revoke user authentication token description: | Revoke an authentication token belonging to the user. A user may revoke their own tokens; revoking another user's token requires MANAGE_USERS access right. Only persistent tokens can be revoked this way, because only they are assigned an ID; a token-id of 0 is rejected with 400. Ephemeral, service and single-use tokens are not revocable individually - they expire, or, for a single-use token, are consumed by the login that spends it. parameters: - name: user-id in: path required: true schema: type: integer description: User ID - name: token-id in: path required: true schema: type: integer description: Token ID responses: '204': description: Token revoked '400': description: Invalid user or token ID '401': description: Unauthorized '403': description: Access denied (not self and no MANAGE_USERS right) '404': description: Token not found for this user 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: AiObservation: type: object properties: id: type: integer format: int64 description: Unique observation identifier timestamp: type: string format: date-time description: Time the observation was recorded instanceId: type: integer description: ID of the AI operator instance that recorded the observation severity: type: integer description: Severity (0=normal, 1=warning, 2=minor, 3=major, 4=critical) title: type: string nullable: true description: Short observation title body: type: string nullable: true description: Detailed observation text objectId: type: integer description: ID of the related object (0 if not related to a specific object) references: type: array nullable: true items: type: string description: References supporting the observation (event IDs, alarm IDs, DCI names, etc.) state: type: string enum: [new, acknowledged, dismissed] description: Observation triage state AiOperator: type: object properties: id: type: integer description: Unique instance identifier name: type: string description: Instance name description: type: string description: Instance description ownerUserId: type: integer description: ID of the user who created the instance enabled: type: boolean description: True if the instance is enabled executing: type: boolean description: True if an iteration is currently running scopeFilter: type: string description: Attention scope filter (object names or IDs) modelSlot: type: string description: AI model slot used for executions (empty = default) minInterval: type: integer description: Minimum interval between executions in seconds maxInterval: type: integer description: Maximum interval between executions in seconds dailyTokenBudget: type: integer description: Daily LLM token budget (0 = unlimited) tokensUsedToday: type: integer format: int64 description: LLM tokens used within the current usage day (UTC) personaPrompt: type: string description: Additional persona instructions appended to the system prompt currentFocus: type: string description: Current focus set by the operator itself watchList: type: string description: Watch list maintained by the operator itself memento: type: string description: State carried between iterations by the operator itself observationRetentionDays: type: integer description: Observation retention override in days (0 = server default) observationMaxRecords: type: integer description: Observation record cap override (0 = server default) lastExecutionTime: type: string format: date-time description: Time of the last completed execution nextExecutionTime: type: string format: date-time description: Scheduled time of the next execution iteration: type: integer description: Number of completed iterations consecutiveFailures: type: integer description: Consecutive failed executions (resets on success and restart) lastExplanation: type: string description: Explanation returned by the last execution created: type: string format: date-time description: Instance creation time modified: type: string format: date-time description: Last configuration change time AiOperatorConfig: type: object description: >- AI operator instance configuration. All fields are optional on update; "name" is required on creation. Adaptive state fields (currentFocus, watchList, memento) are managed by the operator itself and cannot be set through this schema — use the reset-memento endpoint to clear them. properties: name: type: string description: Instance name (required on creation) description: type: string description: Instance description enabled: type: boolean description: Enable or disable the instance scopeFilter: type: string description: Attention scope filter modelSlot: type: string description: AI model slot to use (empty = default) minInterval: type: integer description: Minimum interval between executions in seconds (floor 60) maxInterval: type: integer description: Maximum interval between executions in seconds (must be >= minInterval) dailyTokenBudget: type: integer description: Daily LLM token budget (0 = unlimited) personaPrompt: type: string description: Additional persona instructions observationRetentionDays: type: integer description: Observation retention override in days (0 = server default) observationMaxRecords: type: integer description: Observation record cap override (0 = server default) 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 nullable: true description: The prompt text ChassisPlacement: type: object description: >- Placement geometry of an object within a chassis. Returned both in the chassis layout and as the `chassisPlacementConfig` property of a node. properties: image: type: string format: uuid description: GUID of the image representing the component height: type: integer description: Component height heightUnits: type: integer description: Units for height (0 = rack units, 1 = millimeters) width: type: integer description: Component width widthUnits: type: integer description: Units for width (0 = horizontal pitch, 1 = millimeters) positionHeight: type: integer description: Vertical position of the top-left corner positionHeightUnits: type: integer description: Units for vertical position (0 = rack units, 1 = millimeters) positionWidth: type: integer description: Horizontal position of the top-left corner positionWidthUnits: type: integer description: Units for horizontal position (0 = horizontal pitch, 1 = millimeters) orientation: type: integer description: Orientation (1=front, 2=rear) InetAddress: type: object properties: family: type: integer description: IP address family address: type: string description: IP address in text form. Omitted entirely for unset (AF_UNSPEC) addresses. 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. MibNode: type: object description: A node in the SNMP MIB tree, including its immediate children. properties: oid: type: string description: Full dotted OID for this node. Empty string for the synthetic root. name: type: string nullable: true description: Symbolic name of the node (e.g. `sysDescr`). Null if the node has no name (synthetic root). type: type: string nullable: true description: Symbolic name of the MIB type (e.g. `COUNTER32`). Null if the type code is unknown. enum: - OTHER - IMPORT_ITEM - OBJID - BITSTRING - INTEGER - INTEGER32 - INTEGER64 - UNSIGNED32 - COUNTER - COUNTER32 - COUNTER64 - GAUGE - GAUGE32 - TIMETICKS - OCTETSTR - OPAQUE - IPADDR - PHYSADDR - NETADDR - NAMED_TYPE - SEQID - SEQUENCE - CHOICE - TEXTUAL_CONVENTION - MACRO_DEFINITION - MODCOMP - TRAPTYPE - NOTIFTYPE - MODID - NSAPADDRESS - AGENTCAP - UINTEGER - "NULL" - OBJGROUP - NOTIFGROUP typeCode: type: integer description: Numeric MIB type code as defined in `nxsnmp.h` (MIB_TYPE_*). status: type: string nullable: true description: Symbolic name of the MIB status. Null if the status code is unknown. enum: - MANDATORY - OPTIONAL - OBSOLETE - DEPRECATED - CURRENT statusCode: type: integer description: Numeric MIB status code as defined in `nxsnmp.h` (MIB_STATUS_*). access: type: string nullable: true description: Symbolic name of the MIB access mode. Null if the access code is unknown. enum: - READONLY - READWRITE - WRITEONLY - NOACCESS - NOTIFY - CREATE accessCode: type: integer description: Numeric MIB access code as defined in `nxsnmp.h` (MIB_ACCESS_*). description: type: string nullable: true description: DESCRIPTION clause from the MIB module. textualConvention: type: string nullable: true description: Name of the textual convention applied to this object, if any. displayHint: type: string nullable: true description: DISPLAY-HINT clause for formatting raw values. enumValues: type: string nullable: true description: Comma-separated list of named enumeration values, if defined. index: type: string nullable: true description: INDEX clause for SMIv2 table entries. parent: type: string nullable: true description: Full dotted OID of the parent node. Null for the synthetic root. children: type: array description: Immediate child nodes (one level deep). items: $ref: '#/components/schemas/MibNodeChild' MibNodeChild: type: object description: Summary of a child node, used inside `MibNode.children`. Fetch `/v1/snmp-mib/{oid}` to retrieve full details. properties: subId: type: integer description: Sub-identifier under the parent (last component of the child's OID). oid: type: string description: Full dotted OID of the child node. name: type: string nullable: true description: Symbolic name of the child node, if defined. hasChildren: type: boolean description: True if this child has further descendants. 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 providedByChatBot: type: boolean description: Whether the channel is provided by a chat bot (such channels cannot be modified, renamed, or deleted) LogSummary: type: object properties: name: type: string description: Log name to be used in log API requests description: type: string nullable: true description: Human readable description of log content recordIdColumn: type: string nullable: true description: Name of the column holding the record ID used by the single record endpoint objectIdColumn: type: string nullable: true description: Name of the column referencing the related NetXMS object, if any LogColumn: type: object properties: name: type: string description: Column name as used in filters, ordering, and record objects description: type: string nullable: true description: Human readable column name type: type: string description: | Column data type. Values `timestamp` are returned as ISO 8601 strings, `text`, `textDetails`, and `macAddress` as strings, `jsonDetails` as a JSON document, and all other types as integers. Coded types (`severity`, `objectId`, `userId`, `eventCode`, `alarmState`, `alarmHelpdeskState`, `zoneUIN`, `eventOrigin`, `completionStatus`, `actionCode`, `atmTransactionCode`, `assetOperation`, `deploymentStatus`, `aiTaskStatus`, `connectionEvent`, `aiOperatorExecutionStatus`, `observationState`) carry NetXMS internal codes. Display names for `objectId` and `userId` values are provided by the `resolvedValues` element of the query result. enum: - text - severity - objectId - userId - eventCode - timestamp - integer - alarmState - alarmHelpdeskState - zoneUIN - eventOrigin - textDetails - jsonDetails - completionStatus - actionCode - atmTransactionCode - assetOperation - deploymentStatus - aiTaskStatus - macAddress - connectionEvent - aiOperatorExecutionStatus - observationState - unknown recordId: type: boolean description: Set to true if this column is a sequential record ID detail: type: boolean description: Set to true if this column is only returned when reading a single record LogDetails: allOf: - $ref: '#/components/schemas/LogSummary' - type: object properties: columns: type: array items: $ref: '#/components/schemas/LogColumn' LogColumnFilter: type: object required: - type properties: column: type: string description: Column to filter on. Required for top level filters, ignored for filters nested in a `set`. type: type: string description: | Filter type. `equals`, `less`, `greater`, and `range` require numeric values; `like` performs an SQL LIKE match (use `%` and `_` as wildcards, empty string matches empty and NULL values); `childOf` matches objects below the given object; `relative` matches a timestamp column within the last N units; `currentPeriod` matches a timestamp column within a calendar period in the client's time zone; `set` combines nested filters on the same column. enum: - equals - range - set - like - less - greater - childOf - relative - currentPeriod negated: type: boolean default: false description: Invert the condition value: oneOf: - type: integer format: int64 - type: string description: | Value for `equals`, `less`, `greater`, `childOf` (object ID), `like` (pattern), and `relative` (number of units). String values on numeric columns are parsed as timestamps. from: oneOf: - type: integer format: int64 - type: string description: Lower bound (inclusive) for `range` to: oneOf: - type: integer format: int64 - type: string description: Upper bound (inclusive) for `range` unit: type: string description: Time unit for `relative` enum: - minute - hour - day - week period: type: string description: Calendar period for `currentPeriod` enum: - today - yesterday - thisWeek - thisMonth timeZoneOffset: type: integer description: Client UTC offset in seconds (east of UTC) used to resolve `currentPeriod` boundaries default: 0 operation: type: string description: Operation used to combine nested filters of a `set` enum: - and - or default: and filters: type: array description: Nested filters for `set` items: $ref: '#/components/schemas/LogColumnFilter' LogQueryRequest: type: object properties: filters: type: array description: Column filters combined with AND items: $ref: '#/components/schemas/LogColumnFilter' orderBy: type: array description: Ordering columns, most significant first items: type: object required: - column properties: column: type: string description: Column to sort by descending: type: boolean default: false description: Sort in descending order offset: type: integer format: int64 default: 0 description: Number of records to skip limit: type: integer format: int64 default: 1000 description: Maximum number of records to return (1 to 10000; `offset` + `limit` may not exceed 100000) LogQueryResult: type: object properties: columns: type: array description: Log column definitions (includes detail columns, which are not present in records) items: $ref: '#/components/schemas/LogColumn' offset: type: integer format: int64 description: Number of records skipped count: type: integer description: Number of records returned records: type: array description: Log records as objects keyed by column name items: type: object additionalProperties: true resolvedValues: $ref: '#/components/schemas/LogResolvedValues' LogResolvedValues: type: object description: | Display names for the coded IDs referenced by `records`, collected once per query instead of being repeated on every record. IDs the caller has no read access to, and IDs with no matching object or user, are omitted - client should display raw ID in that case. properties: objects: type: object description: Object summaries for values of `objectId` columns, keyed by object ID additionalProperties: $ref: '#/components/schemas/ObjectSummary' users: type: object description: Login names for values of `userId` columns, keyed by user ID additionalProperties: type: string LogParser: type: object properties: type: type: string description: Log parser type enum: - syslog - windows-event - opentelemetry content: type: string description: Parser configuration as an XML document (empty string if no rules are configured) EventForwarder: type: object properties: name: type: string description: Event forwarder name description: type: string description: Event forwarder description driverName: type: string description: Event forwarder driver name configuration: type: object additionalProperties: true description: Driver-specific configuration object driverInitialized: type: boolean description: Whether the driver was initialized successfully errorMessage: type: string description: Last error message sendStatus: type: integer description: Last delivery status code healthCheckStatus: type: boolean description: Health check status lastMessageTime: type: string description: Timestamp of last forwarded event messageCount: type: integer description: Total events forwarded failureCount: type: integer description: Total delivery failures droppedCount: type: integer description: Total events dropped queueSize: type: integer description: Current event queue size ChatBot: type: object properties: name: type: string description: Chat bot name description: type: string description: Chat bot description driverName: type: string description: Chat bot driver name configuration: type: string description: Driver-specific configuration text driverInitialized: type: boolean description: Whether the driver was initialized and started successfully healthCheckStatus: type: boolean description: Health check status idleTimeout: type: integer description: Session idle timeout in seconds providerSlot: type: string description: AI provider slot for bot sessions (empty for default) activeSessions: type: integer description: Number of currently active chat sessions lastInboundMessageTime: type: string description: Timestamp of last inbound message errorMessage: type: string description: Last error message userMappings: type: array description: Platform peer ID to NetXMS user ID mappings items: type: object properties: peerId: type: string description: Platform-specific peer ID userId: type: integer description: NetXMS user ID AlarmCategory: type: object properties: id: type: integer description: Unique alarm category identifier. name: type: string description: Alarm category name. description: type: string description: Alarm category description. accessControl: type: array description: User/group IDs allowed to see alarms in this category. Group IDs have the high bit set. items: type: integer AlarmCategoryCreateUpdate: type: object required: - name properties: name: type: string description: Alarm category name (cannot be empty). description: type: string description: Alarm category description. accessControl: type: array description: User/group IDs allowed to see alarms in this category. Group IDs have the high bit set. items: type: integer AssetAttribute: type: object description: Asset attribute definition (a single element of the asset management schema). required: - name properties: name: type: string description: Unique attribute name. Must match the pattern ^[A-Za-z$_][A-Za-z0-9$_]*$. Immutable after creation. displayName: type: string description: Human-readable display name. dataType: type: string description: Attribute data type. Accepts the symbolic name (or, for backward compatibility, the numeric code) on input; always returned as the symbolic name. enum: - String - Integer - Number - Boolean - Enum - MacAddress - IPAddress - UUID - ObjectReference - Date isMandatory: type: boolean description: Whether a value for this attribute is mandatory on assets. isUnique: type: boolean description: Whether the attribute value must be unique across all assets. isHidden: type: boolean description: Whether the attribute is hidden in the UI. autofillScript: type: string description: NXSL script used to automatically populate the attribute value. rangeMin: type: integer description: Minimum value (for numeric types) or minimum length (for strings). 0 means unset. rangeMax: type: integer description: Maximum value (for numeric types) or maximum length (for strings). 0 means unset. systemType: type: string description: System type binding for the attribute. Accepts the symbolic name (or the numeric code) on input; always returned as the symbolic name. enum: - None - Serial - IPAddress - MacAddress - Vendor - Model enumMap: type: object description: For the Enum data type, the map of allowed values to their display names. additionalProperties: type: string Alarm: type: object description: Full alarm representation properties: id: type: integer description: Alarm ID parentId: type: integer description: Parent alarm ID (0 if none) rcaScriptName: type: string description: Root cause analysis script name ackByUser: type: integer description: ID of the user who acknowledged the alarm resolvedByUser: type: integer description: ID of the user who resolved the alarm terminatedByUser: type: integer description: ID of the user who terminated the alarm ruleGUID: type: string format: uuid description: GUID of the event processing policy rule that generated the alarm ruleDescription: type: string description: Description of the originating rule eventCode: type: integer description: Source event code eventName: type: string description: Source event name (present only when the event code resolves to a name) eventId: type: integer description: Source event ID eventTags: type: string description: Source event tags source: type: integer description: Source object ID dci: type: integer description: Related DCI ID (0 if none) creationTime: type: string format: date-time description: Alarm creation timestamp lastChangeTime: type: string format: date-time description: Last change timestamp key: type: string description: Alarm key message: type: string description: Alarm message impact: type: string description: Business impact state: type: integer description: "Alarm state: 0=Outstanding, 1=Acknowledged, 2=Resolved, 3=Terminated" isSticky: type: boolean description: Whether the alarm is sticky severity: type: integer description: "Current severity: 0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical" originalSeverity: type: integer description: Original severity at creation time helpDeskState: type: integer description: Helpdesk integration state repeatCount: type: integer description: Number of times the alarm was repeated subordinateAlarms: type: array description: IDs of subordinate alarms items: type: integer categories: type: array description: Alarm categories (as assigned by the event processing policy rule that raised the alarm) items: $ref: '#/components/schemas/AlarmCategoryReference' AlarmComment: type: object description: Comment attached to an alarm properties: id: type: integer description: Comment ID alarmId: type: integer description: ID of the alarm this comment belongs to userId: type: integer description: ID of the user who created or last edited the comment userName: type: string description: Name of the user who created or last edited the comment lastChangeTime: type: string format: date-time description: Time when the comment was created or last edited text: type: string description: Comment text AlarmEvent: type: object description: Event related to an alarm properties: id: type: integer format: int64 description: Event ID parentId: type: integer format: int64 description: ID of the event this event is correlated to (0 for a root event) code: type: integer description: Event code name: type: string description: Event name severity: type: integer description: "Event severity: 0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical" source: type: integer description: Source object ID sourceName: type: string description: Name of the source object (empty if the object no longer exists) timestamp: type: string format: date-time description: Event timestamp message: type: string description: Event message AlarmCategoryReference: type: object description: Reference to an alarm category assigned to an alarm properties: id: type: integer description: Alarm category ID name: type: string nullable: true description: Alarm category name, or null if the category no longer exists IncidentSummary: type: object description: Incident summary as returned by incident list endpoint properties: id: type: integer description: Unique incident identifier. state: type: integer description: 'Incident state: 0 open, 1 in progress, 2 blocked, 3 resolved, 4 closed.' stateName: type: string description: Human-readable incident state name. title: type: string description: Incident title (up to 255 characters). sourceObjectId: type: integer description: ID of object the incident was created on. sourceObjectName: type: string description: Name of the source object. assignedUserId: type: integer description: ID of user the incident is assigned to, or 0 when unassigned. assignedUserName: type: string description: > Login name of assigned user. Unassigned incidents must be detected by testing assignedUserId for 0, not by matching on this name - user ID 0 resolves to the built-in "system" account. alarmCount: type: integer description: Number of alarms linked to the incident. creationTime: type: string format: date-time description: Incident creation time. lastChangeTime: type: string format: date-time description: Time of last incident change. Incident: allOf: - $ref: '#/components/schemas/IncidentSummary' - type: object description: Full incident details properties: sourceAlarmId: type: integer description: ID of alarm the incident was created from, or 0 if created manually. createdByUser: type: integer description: ID of user who created the incident, or 0 when created by event processing rule. createdByUserName: type: string description: > Login name of creating user. Resolves to the built-in "system" account when the incident was created by an event processing rule. resolvedByUser: type: integer description: ID of user who resolved the incident, or 0 if not resolved yet. resolvedByUserName: type: string description: Login name of resolving user. Meaningful only when resolvedByUser is not 0. resolveTime: type: string format: date-time nullable: true description: Time the incident was resolved, or null if not resolved yet. closedByUser: type: integer description: ID of user who closed the incident, or 0 if not closed yet. closedByUserName: type: string description: Login name of closing user. Meaningful only when closedByUser is not 0. closeTime: type: string format: date-time nullable: true description: Time the incident was closed, or null if not closed yet. linkedAlarms: type: array description: IDs of alarms linked to the incident. items: type: integer comments: type: array description: Incident comments, oldest first. items: $ref: '#/components/schemas/IncidentComment' IncidentComment: type: object description: Incident comment. Comments can only be added, not updated or deleted. properties: id: type: integer description: Unique comment identifier. incidentId: type: integer description: ID of incident the comment belongs to. userId: type: integer description: ID of user who added the comment, or 0 for comments added by the server itself. userName: type: string description: > Login name of user who added the comment. Comments added by the server itself (AI analysis, event processing rules) carry user ID 0 and resolve to the built-in "system" account; use aiGenerated to identify AI-authored comments. creationTime: type: string format: date-time description: Comment creation time. text: type: string description: Comment text. aiGenerated: type: boolean description: True if the comment was generated by AI analysis. IncidentActivityEntry: type: object description: Entry in incident activity log properties: id: type: integer description: Unique activity entry identifier. incidentId: type: integer description: ID of incident the entry belongs to. timestamp: type: string format: date-time description: Time the activity was recorded. userId: type: integer description: ID of user who performed the action, or 0 if performed by the server itself. userName: type: string description: > Login name of user who performed the action. Actions performed by the server itself (for example, incident creation by an event processing rule) carry user ID 0 and resolve to the built-in "system" account. activityType: type: integer description: > Activity type: 0 created, 1 state change, 2 assigned, 3 alarm linked, 4 alarm unlinked, 5 comment added, 6 updated. oldValue: type: string nullable: true description: Value before the change, if applicable. newValue: type: string nullable: true description: Value after the change, if applicable. details: type: string nullable: true description: Additional details, if any. IncidentCreate: type: object required: - sourceObjectId - title properties: sourceObjectId: type: integer description: ID of object to create the incident on. title: type: string description: Incident title (cannot be empty, truncated to 255 characters). initialComment: type: string description: Optional comment added to the new incident. sourceAlarmId: type: integer description: Optional ID of alarm to create the incident from and link to it. IncidentUpdate: type: object required: - title properties: title: type: string description: New incident title (cannot be empty, truncated to 255 characters). IncidentStateChange: type: object required: - state properties: state: type: integer description: 'New incident state: 0 open, 1 in progress, 2 blocked, 3 resolved, 4 closed.' comment: type: string description: Comment describing the change. Required when new state is 2 (blocked). IncidentAssign: type: object required: - userId properties: userId: type: integer description: ID of user to assign the incident to, or 0 to clear the assignment. IncidentCommentCreate: type: object required: - text properties: text: type: string description: Comment text (cannot be empty). IncidentAlarmLink: type: object required: - alarmId properties: alarmId: type: integer description: ID of alarm to link to the incident. 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 twoFAGraceLogins: type: integer description: Remaining two-factor authentication 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) AuthenticationToken: type: object description: An authentication token issued for a user. properties: id: type: integer description: | Token ID. Assigned only to persistent tokens; ephemeral, service and single-use tokens are always reported with 0 and therefore cannot be revoked by ID. userId: type: integer description: ID of the user the token was issued for. persistent: type: boolean description: True if the token is persisted in the database (long-lived API token). service: type: boolean description: True if this is a service token. singleUse: type: boolean description: | True if the token is single-use. Such a token is destroyed by the login that spends it, so it authenticates exactly one session. It can only be spent on an NXCP login (management console or other NXCP client) and is rejected with 401 if presented as a REST bearer credential. description: type: string description: Human-readable token description. issuingTime: type: integer description: Token issuing time (UNIX timestamp, seconds). expirationTime: type: integer description: Token expiration time (UNIX timestamp, seconds). value: type: string description: | Clear-text token value. Returned only by the create operation, which is the single point where the server gives it out; it is absent from token listings. A lost token cannot be recovered and has to be revoked and re-issued. AuthenticationTokenCreateInput: type: object description: Request body for issuing a new authentication token. required: - validFor properties: validFor: type: integer format: int64 minimum: 1 maximum: 4294967295 description: | Validity period in seconds from now. For a persistent token the resulting expiration time is additionally required to be not later than 2038-01-19T03:14:07Z, because it is stored in a 32-bit database column; a longer period is rejected with 400. A non-persistent token (ephemeral, service or single-use) is additionally bound by the absolute lifetime cap "WebAPI.AuthTokenMaxLifetime" (24 hours by default). A longer validity period is accepted but silently reduced to the cap, so the returned expirationTime can be earlier than the requested one. persistent: type: boolean default: true description: True to issue a persistent (database-backed) token, false for an ephemeral one. singleUse: type: boolean default: false description: | True to issue a single-use token, which is destroyed by the login that spends it and therefore authenticates exactly one session. Intended for handing a session over to another process (for example a launcher spawning the management console). A single-use token can only be spent on an NXCP login; presenting it as a REST bearer credential is rejected with 401 and does not consume it. Single-use tokens are kept in memory only and do not survive a server restart, so this option requires "persistent" to be false. Because "persistent" defaults to true, a request body containing only "singleUse": true is rejected with 400 - "persistent": false must be sent explicitly. description: type: string maxLength: 127 description: | Optional human-readable token description, limited to 127 characters; a longer value is rejected with 400. The limit is the width of the database column a persistent token is stored in, and is applied to all token types. EventProcessingPolicy: type: object description: Event processing policy - an ordered list of rules plus a version for optimistic concurrency control properties: version: type: integer description: Policy version, incremented on every change. Send this value back when updating the policy to detect concurrent modifications. ruleCount: type: integer description: Number of rules in the policy rules: type: array description: Rules in evaluation order items: $ref: '#/components/schemas/EventProcessingPolicyRule' EventProcessingPolicyUpdateRequest: type: object description: Request body for replacing the entire event processing policy required: - rules properties: version: type: integer description: | Expected current policy version. If present, the update is applied only if it matches the server-side version, otherwise the request is rejected with status 409. If omitted, the policy is replaced unconditionally. rules: type: array description: New rule list in evaluation order (the existing policy is fully replaced) items: $ref: '#/components/schemas/EventProcessingPolicyRule' EventProcessingPolicyUpdateResult: type: object description: Result of a successful event processing policy update properties: version: type: integer description: New policy version ruleCount: type: integer description: Number of rules now in the policy warnings: type: string description: Human-readable text describing any issues encountered while applying the rules (e.g. references to objects that no longer exist). Present only if there were warnings. EventProcessingPolicyRule: type: object description: | A single event processing policy rule. On output, object and event references are plain numeric identifiers. On input, they may also be supplied as configuration export records (objects/events as nested objects carrying `name` and `guid`); such references are resolved by GUID or name. properties: guid: type: string format: uuid description: Rule GUID. A new random GUID is generated on input if omitted. ruleNumber: type: integer description: 1-based position of the rule in the policy (output only; ignored on input - array order is authoritative) flags: type: integer description: | Rule flags bitmask: 0x000001 stop processing, 0x000002 negated source match, 0x000004 negated event match, 0x000008 generate alarm, 0x000010 disabled, 0x000020 terminate alarms by regular expression, 0x000100..0x001000 match severity (info/warning/minor/major/critical), 0x002000 create helpdesk ticket, 0x004000 accept correlated events, 0x008000 negated time frame match, 0x010000 start downtime, 0x020000 end downtime, 0x040000 request AI comment, 0x080000 create incident, 0x100000 AI analyze incident, 0x200000 AI auto-assign incident sources: type: array description: Source object IDs the rule matches (empty = match any source) items: type: integer sourceExclusions: type: array description: Source object IDs explicitly excluded from matching items: type: integer events: type: array description: Event codes the rule matches (empty = match any event) items: type: integer timeFrames: type: array description: Time frames during which the rule is active (empty = always active) items: type: object properties: time: type: integer description: Time-of-day filter bitmask date: type: integer description: Date filter bitmask (day of month / month / day of week) filterScript: type: string description: NXSL filter script source; rule matches only if the script returns true alarmSeverity: type: integer description: "Severity of the generated alarm: 0=Normal, 1=Warning, 2=Minor, 3=Major, 4=Critical, 5=same as event, 6=terminate alarms, 7=resolve alarms" alarmKey: type: string description: Alarm key template (supports macro expansion) alarmMessage: type: string description: Alarm message template (supports macro expansion) alarmImpact: type: string description: Alarm impact description template alarmTimeout: type: integer description: Alarm timeout in seconds (0 = no timeout) alarmTimeoutEvent: type: integer description: Event code generated when the alarm times out alarmCategories: type: array description: Alarm category IDs assigned to the generated alarm items: type: integer rootCauseAnalysisScript: type: string description: Name of the library script used for root cause analysis actions: type: array description: Server actions executed when the rule matches items: type: object properties: id: type: integer description: Server action ID timerDelay: type: string description: Delay before executing the action (seconds; supports macro expansion). Empty for immediate execution. timerKey: type: string description: Timer key (supports macro expansion); used together with timerCancellations blockingTimerKey: type: string description: Action is suppressed while a timer with this key is active snoozeTime: type: string description: Minimum interval between repeated executions (seconds; supports macro expansion) active: type: boolean description: Whether the action is enabled timerCancellations: type: array description: Timer keys to cancel when the rule matches items: type: string actionScript: type: string description: NXSL action script executed when the rule matches pstorageSetActions: type: object additionalProperties: type: string description: Persistent storage entries to set (key/value pairs; values support macro expansion) pstorageDeleteActions: type: array description: Persistent storage keys to delete items: type: string customAttributeSetActions: type: object additionalProperties: type: string description: Custom attributes to set on the source object (key/value pairs; values support macro expansion) customAttributeDeleteActions: type: array description: Custom attribute names to delete from the source object items: type: string downtimeTag: type: string description: Downtime tag used when starting or ending maintenance downtime incidentDelay: type: integer description: Delay in seconds before an incident is created (0 = immediate) incidentTitle: type: string description: Incident title template (empty = use alarm message) incidentDescription: type: string description: Incident description template incidentAIAnalysisDepth: type: integer description: Depth of AI incident analysis (0=quick, 1=standard, 2=thorough) incidentAIPrompt: type: string description: Custom AI analysis instructions for the incident aiAgentInstructions: type: string description: Instructions for the AI agent when generating an alarm comment comments: type: string description: Rule description 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 TableData: type: object description: Tabular query result (serialized NetXMS Table). properties: extendedFormat: type: boolean description: Whether the table uses extended format (per-cell status and row metadata) source: type: integer description: Data source identifier title: type: string description: Table title columns: type: array description: Column definitions items: type: object properties: name: type: string dataType: type: integer displayName: type: string instanceColumn: type: boolean unitName: type: string multiplier: type: integer useMultiplier: type: integer data: type: array description: Table rows items: type: object properties: objectId: type: integer description: Source object ID (present only in extended format when set) baseRow: type: integer description: Base row index (present only when set) values: type: array description: Cell values, one per column items: type: object properties: status: type: integer description: Cell status (present only when not the default) value: type: string description: Cell value TableQueryError: type: object description: Error response for summary table query failures. properties: reason: type: string description: Human-readable failure reason errorCode: type: integer description: NetXMS request completion code (RCC) 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: - 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 defaultValue: type: string description: Default value 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 remotePort: type: integer description: Remote port for TCP tunnel remoteHost: type: string description: Remote host for TCP tunnel applicableClasses: type: integer description: | Bitmask of object classes the tool is applicable to. Bit 0 (1) = Node, bit 1 (2) = Interface, bit 2 (4) = Sensor, bit 3 (8) = Access point. Only server-script and URL tools may include bits other than Node. inputFields: type: array items: $ref: '#/components/schemas/ObjectToolInputField' description: Input field definitions ObjectToolColumn: type: object description: Column definition for table tools (snmp-table or agent-list) properties: name: type: string description: Column display name oid: type: string description: Column SNMP OID or agent column expression format: type: integer description: Column data format code captureGroup: type: integer description: Regex capture group number used to extract the cell value (0 for whole match) 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 format: uuid description: UUID of the icon image in the image library; absent when no icon is set acl: type: array description: | User and group IDs allowed to execute this tool. Only present when the caller has SYSTEM_ACCESS_MANAGE_TOOLS rights. items: type: integer columns: type: array description: | Column definitions for table tools. Only present when the caller has SYSTEM_ACCESS_MANAGE_TOOLS rights and the tool type is snmp-table or agent-list. items: $ref: '#/components/schemas/ObjectToolColumn' translations: type: array description: | Localized string overrides for tool name, description, and input field labels. Only present when the caller has SYSTEM_ACCESS_MANAGE_TOOLS rights and at least one translation exists. items: $ref: '#/components/schemas/ObjectToolTranslation' ObjectToolWrite: type: object description: | Request body for creating or updating an object tool. The shape mirrors the ObjectToolDetails response, so a tool can be fetched, edited, and put back without translation. Whole-record replace semantics on PUT. required: - name - type properties: name: type: string description: Tool name type: $ref: '#/components/schemas/ObjectToolType' data: type: string description: Tool-specific data (command line, script name, URL template, etc.) description: type: string flags: type: object description: Tool flag booleans; missing keys default to false properties: askConfirmation: type: boolean generatesOutput: type: boolean disabled: type: boolean showInCommands: type: boolean snmpIndexedByValue: type: boolean runInContainerContext: type: boolean suppressSuccessMessage: type: boolean setupTcpTunnel: type: boolean filter: type: string confirmationMessage: type: string commandName: type: string commandShortName: type: string icon: type: string format: uuid description: UUID of an existing image library entry; omit or use null UUID for no icon remotePort: type: integer remoteHost: type: string applicableClasses: type: integer description: | Bitmask of applicable object classes. Bit 0 (1) = Node, bit 1 (2) = Interface, bit 2 (4) = Sensor, bit 3 (8) = Access point. Defaults are applied if 0 or missing: URL tools default to all classes, others to Node. Non-Node bits are stripped for tool types other than server-script, url and ssh-command. acl: type: array description: | User and group IDs allowed to execute this tool. Replaces the existing ACL on PUT. Send an empty array to remove all entries. items: type: integer columns: type: array description: Column definitions for snmp-table and agent-list tools. Ignored for other types. items: $ref: '#/components/schemas/ObjectToolColumn' inputFields: type: array items: $ref: '#/components/schemas/ObjectToolInputField' translations: type: array description: Localized string overrides for tool name, description, and input field labels. Replaces all existing translations on PUT. items: $ref: '#/components/schemas/ObjectToolTranslation' ObjectToolTranslation: type: object description: Single localized string override for an object tool. properties: field: type: string description: Tag identifying which string is translated (e.g. tool name, description, or an input field label) language: type: string description: Language code the translation applies to value: type: string description: Translated string value 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 ObjectUrl: type: object properties: id: type: integer description: URL ID (assigned by the server) url: type: string description: The URL description: type: string description: Human-readable description RackPassiveElement: type: object description: A passive rack element (patch panel, filler panel, organiser, or PDU). On create/update only the writable fields are read; the element type is immutable after creation. properties: id: type: integer description: Element ID (assigned by the server; ignored on input). readOnly: true name: type: string description: Element name. type: type: integer description: Element type (0=patch panel, 1=filler panel, 2=organiser, 3=PDU). Immutable on update. position: type: integer description: Position in rack units. height: type: integer description: Height in rack units. orientation: type: integer description: Orientation (0=fill, 1=front, 2=rear). portCount: type: integer description: Number of ports (patch panels only). imageFront: type: string format: uuid description: Front image UUID from the image library. imageRear: type: string format: uuid description: Rear image UUID from the image library. DashboardElement: type: object description: A single dashboard element (widget). Element type-specific configuration lives in the free-form `data` object; positioning lives in `layout`. properties: guid: type: string format: uuid description: Element GUID. Assigned by the server when omitted on input. type: type: integer description: Element type code. data: type: object description: Element configuration (type-specific free-form object). layout: type: object description: Element layout / placement (free-form object). required: - type DashboardContent: type: object description: Content of a dashboard or dashboard template object - column count, display priority, and element layout. properties: numColumns: type: integer description: Number of layout columns. displayPriority: type: integer description: Display ordering priority (plain dashboards only; ignored for templates). forcedContextObjectId: type: integer description: Forced context object ID for dashboards created from a template (plain dashboards only; ignored for templates). elements: type: array description: Dashboard elements. On update this is a full replacement of the element layout. items: $ref: '#/components/schemas/DashboardElement' NetworkMapElement: type: object description: A single network map element (object reference, decoration, DCI container/image, or text box). Element type-specific fields are carried alongside the common ones. properties: id: type: integer description: Element ID (unique within the map). type: type: integer description: Element type code (e.g. object, decoration, DCI container, DCI image, text box). posX: type: integer description: X position. posY: type: integer description: Y position. flags: type: integer description: Element flags. required: - type NetworkMapLink: type: object description: A single network map link between two elements. Link IDs are assigned by the server on save. properties: element1: type: integer description: ID of the first linked element. element2: type: integer description: ID of the second linked element. interface1: type: integer description: Object ID of the interface at the first endpoint (0 if none). interface2: type: integer description: Object ID of the interface at the second endpoint (0 if none). type: type: integer description: Link type code. name: type: string description: Link label. connectorName1: type: string description: Connector label at the first endpoint. connectorName2: type: string description: Connector label at the second endpoint. flags: type: integer description: Link flags. colorSource: type: integer description: Link color source. color: type: integer description: Fixed link color (used when color source is "custom color"). colorProvider: type: string description: Name of the script providing the link color (used when color source is "script"). config: type: string description: Serialized JSON link configuration (e.g. referenced DCI list). NetworkMapContent: type: object description: Content of a network map object - layout settings, link defaults, background, and element/link layout. properties: mapType: type: integer description: Map type (custom, layer-2 topology, IP topology, etc.). layout: type: integer description: Automatic layout algorithm. flags: description: | Map behavior/appearance flags. Returned as an object of booleans. On update it may be supplied either as such an object (only the keys present are changed; omitted keys are left unchanged) or, as a shortcut, as an integer bit mask that replaces the whole flag word. oneOf: - type: object additionalProperties: type: boolean properties: showStatusIcon: { type: boolean } showStatusFrame: { type: boolean } showStatusBackground: { type: boolean } showEndNodes: { type: boolean } calculateStatus: { type: boolean } filterObjects: { type: boolean } showLinkDirection: { type: boolean } useL1Topology: { type: boolean } centerBackgroundImage: { type: boolean } translucentLabelBackground: { type: boolean } dontUpdateLinkText: { type: boolean } fitBackgroundImage: { type: boolean } fitToScreen: { type: boolean } showAsObjectView: { type: boolean } showTraffic: { type: boolean } showWifiClients: { type: boolean } - type: integer description: Raw flag bit mask (replaces the whole flag word). seedObjects: type: array description: Seed object IDs for topology maps. items: type: integer discoveryRadius: type: integer description: Topology discovery radius (hops from seed). defaultLinkColor: type: integer description: Default link color. defaultLinkColorSource: type: integer description: Default link color source. defaultLinkRouting: type: integer description: Default link routing algorithm. defaultLinkWidth: type: integer description: Default link width. defaultLinkStyle: type: integer description: Default link style. objectDisplayMode: type: integer description: Object element display mode. backgroundColor: type: integer description: Map background color. background: type: string format: uuid description: Background image UUID (or a special value for map/none). When set, the background geo-positioning fields below apply. backgroundLatitude: type: number description: Background map center latitude. backgroundLongitude: type: number description: Background map center longitude. backgroundZoom: type: integer description: Background map zoom level. filter: type: string description: NXSL object filter script source. linkScript: type: string description: NXSL link styling script source. width: type: integer description: Map canvas width. height: type: integer description: Map canvas height. canvasType: type: integer description: Map canvas type. initialViewMode: type: integer description: Initial view mode when the map is opened. displayPriority: type: integer description: Display ordering priority. elements: type: array description: Map elements. On update this fully replaces the element layout. items: $ref: '#/components/schemas/NetworkMapElement' links: type: array description: Map links. On update this fully replaces the link layout. items: $ref: '#/components/schemas/NetworkMapLink' EffectiveRights: type: object readOnly: true description: | Access rights the calling user effectively has on the object. Rights are resolved at the object in this order: if an access control entry names the user directly, that entry alone is used; otherwise the entries for all groups the user belongs to are combined; otherwise, if the object is set to inherit, the effective rights resolved independently on each parent object are combined. An entry granting no rights still counts as a match: a user entry granting nothing suppresses both groups and parents, while a group entry granting nothing suppresses only parents and the other matching groups are still combined. This is the same set of rights NXCP clients obtain with CMD_GET_EFFECTIVE_RIGHTS. Every right is always present as separate boolean attribute. Value is specific to the calling user rather than part of the object's stored state, and is ignored if present in a request body. properties: read: type: boolean description: Read object (see it in object listings and read its basic attributes) modify: type: boolean description: Modify object configuration createChildObjects: type: boolean description: Create child objects delete: type: boolean description: Delete object viewAlarms: type: boolean description: View alarms associated with the object accessControl: type: boolean description: Read and modify object's access control list updateAlarms: type: boolean description: Acknowledge and update alarms associated with the object sendEvents: type: boolean description: Send events on behalf of the object control: type: boolean description: >- Execute control operations on the object - agent commands, wake-on-LAN, object tools, SSH commands, and TCP proxy. Does not cover changing management status, which requires "modify". terminateAlarms: type: boolean description: Terminate and resolve alarms associated with the object pushData: type: boolean description: Push data collection values to the object createHelpdeskTicket: type: boolean description: Create helpdesk tickets from alarms associated with the object downloadFiles: type: boolean description: Download files from the node uploadFiles: type: boolean description: Upload files to the node manageFiles: type: boolean description: Manage files on the node (rename, move, delete) controlMaintenanceMode: type: boolean description: Enter and leave maintenance mode readAgentData: type: boolean description: Read data provided by NetXMS agent readSnmpData: type: boolean description: Read data provided via SNMP takeScreenshot: type: boolean description: Take screenshot on the node editMaintenanceJournal: type: boolean description: Create and edit maintenance journal entries configureAgent: type: boolean description: Change agent configuration on the node editComments: type: boolean description: Edit object comments manageResponsibleUsers: type: boolean description: Manage list of users responsible for the object delegatedRead: type: boolean description: >- Read the object indirectly when it is reached through a dashboard or network map the user is allowed to read, without holding "read" on the object itself managePolicies: type: boolean description: Manage agent policies (template objects only) manageIncidents: type: boolean description: Manage incidents associated with the object readCredentials: type: boolean description: Read object's credentials (SNMP communities, agent secrets, and similar) queryWebService: type: boolean description: Query web services defined on the node uploadDeviceConfig: type: boolean description: Upload configuration to network device readDeviceConfig: type: boolean description: Read configuration of network device readDataCollectionConfig: type: boolean description: Read data collection configuration executeScript: type: boolean description: Execute ad-hoc scripts in the context of the object ObjectAccessRights: type: object description: Object access control list and the flag controlling inheritance of access rights from parent objects. properties: inheritAccessRights: type: boolean description: | When true, rights are inherited from parent objects for users that no entry in the list below matches, either directly or through one of their groups, and are combined across all parents. Inherited rights do not add to directly assigned rights - a matching entry below replaces them entirely, even when it grants nothing. See EffectiveRights for the full resolution order. accessList: type: array description: Directly assigned access control entries. On update this is a full replacement of the object's own access list. items: type: object properties: userId: type: integer description: User or group ID. Group IDs have the group flag bit (0x40000000) set. access: type: integer format: int64 description: | Bit mask of access rights granted to the user or group on this object. Attribute is 64 bit wide since schema version 70.25, although only low 32 bits are allocated so far - bit 31 (0x80000000) is a valid access bit (execute script), not a flag. CustomAttribute: type: object description: A single custom attribute as embedded in an object document and returned by the custom-attributes sub-resource. properties: name: type: string description: Attribute name. value: type: string description: Attribute value. flags: type: object description: Attribute flags as named booleans. properties: inheritable: type: boolean description: Attribute is inherited by child objects. redefined: type: boolean description: Inherited attribute is redefined on this object. conflict: type: boolean description: Attribute is inherited from multiple parents with differing values. sourceObject: type: integer description: ID of the object an inherited attribute originates from; 0 if defined directly on this object. PollingConfig: type: object additionalProperties: false description: | Polling property group for a node. Returned by GET /v1/objects/{id}/polling and embedded as `ObjectDetails.polling`; accepted by PATCH /v1/objects/{id}/polling with merge-patch semantics (omitted fields are left unchanged). Within the `flags` object only the named booleans that are present are modified; the rest are preserved. properties: pollerNode: type: integer description: ID of the node used for polling, or 0 to poll from the server. Must reference a node object. requiredPollCount: type: integer description: Number of consecutive polls required before a status change is registered. expectedCapabilities: type: integer description: Expected capabilities bitmask. useIfXTable: type: integer description: Whether to use SNMP ifXTable for interface polling (0 = server default, 1 = enabled, 2 = disabled). flags: type: object additionalProperties: false description: Poll-type and per-protocol disable flags. Only present keys are changed. properties: disableAgent: type: boolean description: Disable usage of NetXMS agent for all polls. disableSNMP: type: boolean description: Disable usage of SNMP for all polls. disableICMP: type: boolean description: Disable usage of ICMP pings for status polling. disableSSH: type: boolean description: Disable SSH usage for all polls. disableVNC: type: boolean description: Disable VNC detection. disableSMCLPProperties: type: boolean description: Disable reading of SM-CLP available properties metadata. disableEtherNetIP: type: boolean description: Disable usage of EtherNet/IP for all polls. disableModbus: type: boolean description: Disable usage of Modbus for all polls. disable8021xStatusPoll: type: boolean description: Disable 802.1x port state checking during status poll. disableRoutePoll: type: boolean description: Disable routing table polling. disableTopologyPoll: type: boolean description: Disable topology polling. disableDiscoveryPoll: type: boolean description: Disable network discovery polling. disablePerfCount: type: boolean description: Disable reading of Windows performance counters metadata. disableStatusPoll: type: boolean description: Disable status polling. disableConfigurationPoll: type: boolean description: Disable configuration polling. disableDataCollection: type: boolean description: Disable data collection. SnmpConfig: type: object additionalProperties: false description: | SNMP communication property group for a node. Returned by GET /v1/objects/{id}/snmp and embedded as `ObjectDetails.snmp`; accepted by PATCH /v1/objects/{id}/snmp with merge-patch semantics (omitted fields are left unchanged). properties: version: type: string enum: ['1', '2c', '3', default] description: SNMP protocol version used for polling. Clamped up to the server minimum SNMP version. port: type: integer description: SNMP UDP port. proxy: type: integer nullable: true description: ID of the node used as SNMP proxy, or 0 for no proxy. codepage: type: string nullable: true description: Codepage used to decode SNMP string values (empty for server default). settingsLocked: type: boolean description: Prevent automatic SNMP configuration changes by configuration polls. authName: type: string nullable: true description: Community string for SNMP v1/v2c, or USM user name for SNMP v3. authMethod: type: string enum: [NONE, MD5, SHA1, SHA224, SHA256, SHA384, SHA512] description: SNMP v3 authentication method. authPassword: type: string nullable: true description: SNMP v3 authentication password (write-only). privMethod: type: string enum: [NONE, DES, AES-128, AES-192, AES-256] description: SNMP v3 privacy (encryption) method. privPassword: type: string nullable: true description: SNMP v3 privacy password (write-only). contextName: type: string nullable: true description: SNMP v3 context name. trap: nullable: true description: Separate credentials for received SNMP traps. An object fully replaces them; null reverts to using the polling credentials. allOf: - $ref: '#/components/schemas/SnmpTrapCredentials' agents: type: array description: | Additional SNMP agents configured on the node, referenced by name from data collection items. On PATCH the array fully replaces the existing list (it is not merged element-wise); agent names must be unique within the node. items: $ref: '#/components/schemas/SnmpAgentConfig' SnmpAgentConfig: type: object additionalProperties: false required: [name, version] description: | Additional SNMP agent on a node - an alternative SNMP endpoint with its own port, credentials, and optionally IP address. Credential passwords are returned only for users holding modify or read-credentials access on the object. properties: name: type: string maxLength: 63 description: Agent name, unique within the node. Referenced from data collection items. address: type: string nullable: true description: IP address of the agent, or null to use the node's primary IP address. port: type: integer description: SNMP UDP port (defaults to 161 when omitted on creation). version: type: string enum: ['1', '2c', '3'] description: SNMP protocol version. authName: type: string nullable: true description: Community string for SNMP v1/v2c, or USM user name for SNMP v3. authMethod: type: string enum: [NONE, MD5, SHA1, SHA224, SHA256, SHA384, SHA512] description: SNMP v3 authentication method. authPassword: type: string nullable: true description: SNMP v3 authentication password (returned only with credential access). privMethod: type: string enum: [NONE, DES, AES-128, AES-192, AES-256] description: SNMP v3 privacy (encryption) method. privPassword: type: string nullable: true description: SNMP v3 privacy password (returned only with credential access). contextName: type: string nullable: true description: SNMP context name. SnmpTrapCredentials: type: object additionalProperties: false description: | Separate SNMP trap reception credentials. Merge-patched onto the existing trap credentials; omitted fields are left unchanged. When the trap credentials are being created (none existed before) the version defaults to 2c. properties: version: type: string enum: ['1', '2c', '3'] description: SNMP version of the expected traps. authName: type: string description: Trap community string (v1/v2c) or USM user name (v3). authMethod: type: string enum: [NONE, MD5, SHA1, SHA224, SHA256, SHA384, SHA512] description: SNMP v3 authentication method for traps. authPassword: type: string nullable: true description: SNMP v3 trap authentication password (write-only). privMethod: type: string enum: [NONE, DES, AES-128, AES-192, AES-256] description: SNMP v3 privacy method for traps. privPassword: type: string nullable: true description: SNMP v3 trap privacy password (write-only). AgentConfig: type: object additionalProperties: false description: | NetXMS agent communication property group for a node. Returned by GET /v1/objects/{id}/agent and embedded as `ObjectDetails.agent`; accepted by PATCH /v1/objects/{id}/agent with merge-patch semantics (omitted fields are left unchanged). properties: port: type: integer description: Agent TCP port. proxy: type: integer nullable: true description: ID of the node used as agent proxy, or 0 for no proxy. sharedSecret: type: string nullable: true description: Agent shared secret (write-only). forceEncryption: type: boolean description: Require encryption for agent communication. tunnelOnly: type: boolean description: Accept agent connections only through an established agent tunnel. cacheMode: type: string enum: [default, on, off] description: Agent-side DCI value caching mode. compressionMode: type: string enum: [default, enabled, disabled] description: Agent communication protocol compression mode. certificateMappingMethod: type: string enum: [subject, publicKey, commonName, templateId] description: Method used to map the agent's certificate to this node for authentication. certificateMappingData: type: string nullable: true description: Certificate mapping data (interpretation depends on certificateMappingMethod). ObjectCreationRequest: type: object required: - class - name description: | Object creation document. Common fields apply to every class; the remaining fields are only meaningful for the class indicated by `class` (and are ignored otherwise). Any common scalar property accepted by `PATCH /v1/objects/{object-id}` may also be supplied and is applied to the new object after construction. properties: class: type: string description: Symbolic object class name. enum: - Subnet - Node - Interface - Container - Zone - Template - TemplateGroup - NetworkService - VPNConnector - Condition - Cluster - BusinessServiceProto - Asset - AssetGroup - NetworkMapGroup - NetworkMap - Dashboard - DashboardTemplate - DashboardGroup - BusinessService - Collector - Circuit - MobileDevice - Rack - WirelessDomain - Chassis - Sensor - CloudDomain name: type: string description: Object name. parentId: type: integer description: Parent object ID. Required for all classes except Node (where a parent subnet is resolved automatically from the IP address when omitted). zoneUIN: type: integer description: Zone UIN (when zoning is enabled). comments: type: string description: Free-form object comments. alias: type: string description: Object alias. assetId: type: integer description: Optional ID of an existing asset object to link to the new object. # --- Node --- primaryName: type: string description: (Node) Primary host name. If present it is resolved to the primary IP address. ipAddress: type: string description: (Node/Interface/Subnet) IP address. For a node it is the primary IP address used when no primary name is given. creationFlags: type: integer description: (Node) Bit mask controlling node creation (disable polling protocols, create unmanaged, etc.). agentPort: type: integer snmpPort: type: integer etherNetIpPort: type: integer etherNetIpAddress: type: string modbusTcpPort: type: integer modbusUnitId: type: integer description: (Node/Sensor) Modbus unit ID. sshLogin: type: string sshPassword: type: string sshPort: type: integer vncPassword: type: string vncPort: type: integer agentProxy: type: integer snmpProxy: type: integer mqttProxy: type: integer modbusProxy: type: integer etherNetIpProxy: type: integer icmpProxy: type: integer sshProxy: type: integer vncProxy: type: integer webServiceProxy: type: integer # --- Interface --- ifIndex: type: integer description: (Interface) Interface index. ifType: type: integer description: (Interface) Interface type (IANA ifType). macAddress: type: string description: (Interface/Sensor) MAC address. chassis: type: integer description: (Interface) Physical chassis number. module: type: integer description: (Interface) Physical module number. pic: type: integer description: (Interface) Physical PIC number. port: type: integer description: (Interface) Physical port number. physicalPort: type: boolean description: (Interface) Whether the interface is a physical port. # --- Network service --- serviceType: type: integer description: (NetworkService) Service type. ipProtocol: type: integer description: (NetworkService) IP protocol number (default 6/TCP). ipPort: type: integer description: (NetworkService) Port number. request: type: string description: (NetworkService) Request string sent to the service. response: type: string description: (NetworkService) Expected response string. createStatusDci: type: boolean description: (NetworkService) Create a status DCI on the parent node. # --- Network map --- mapType: type: integer description: (NetworkMap) Map type. mapCanvasType: type: integer description: (NetworkMap) Canvas rendering type. seedObjects: type: array items: type: integer description: (NetworkMap) Seed object IDs. # --- Other class-specific fields --- controllerId: type: integer description: (Chassis) Controller node ID. height: type: integer description: (Rack) Rack height in units. deviceId: type: string description: (MobileDevice) Device identifier. instanceDiscoveryMethod: type: integer description: (BusinessServiceProto) Instance discovery method. flags: type: integer description: (Sensor) Sensor flags. deviceClass: type: integer description: (Sensor) Sensor device class. vendor: type: string description: (Sensor) Vendor name. model: type: string description: (Sensor) Model. serialNumber: type: string description: (Sensor) Serial number. deviceAddress: type: string description: (Sensor) Device address. gatewayNode: type: integer description: (Sensor) Gateway node ID. connectorName: type: string description: (CloudDomain) Cloud connector name. credentials: oneOf: - type: string - type: object description: (CloudDomain) Cloud credentials as a JSON object or raw JSON string. discoveryFilter: type: string description: (CloudDomain) Resource discovery filter. removalPolicy: type: integer description: (CloudDomain) Resource removal policy. gracePeriod: type: integer description: (CloudDomain) Grace period in seconds before removing vanished resources. assetProperties: type: object additionalProperties: type: string description: (Asset) Asset attribute values keyed by attribute name. All mandatory attributes must be present. linkedObjectId: type: integer description: (Asset) Optional ID of an existing object to link the new asset to. Server will update asset identification (serial number or MAC address) from that object and run auto fill scripts after linking. Requires modify access to that object. ObjectDetails: type: object properties: alias: type: string description: Object alias category: type: integer description: Object category ID chassisPlacementConfig: allOf: - $ref: '#/components/schemas/ChassisPlacement' description: Placement geometry within the parent chassis. Present only for nodes placed in a chassis. class: $ref: '#/components/schemas/ObjectClass' customAttributes: type: array description: Custom attributes defined on the object (including those inherited from parent objects). items: $ref: '#/components/schemas/CustomAttribute' effectiveRights: $ref: '#/components/schemas/EffectiveRights' guid: type: string format: uuid description: Object GUID id: type: integer description: Object ID name: type: string description: Object name responsibleUsers: type: array description: Users or groups responsible for the object (the object's own list; entries inherited from parent objects are not included). items: type: object properties: userId: type: integer description: User or group ID tag: type: string description: Responsible user tag timestamp: type: string format: date-time description: Object last change timestamp status: $ref: '#/components/schemas/Status' pollStates: type: array description: Per-poll-type state. Present only for pollable objects (e.g. nodes, sensors, interfaces); one entry per poll type the object accepts. items: $ref: '#/components/schemas/PollState' PollState: type: object description: State of a single poll type on a pollable object. properties: name: type: string description: Poll type name (e.g. "status", "configuration", "instance", "discovery", "topology", "routing-table", "icmp", "autobind", "map-update"). pending: type: boolean description: True if a poll of this type is currently queued or in flight. lastCompleted: type: string format: date-time nullable: true description: Timestamp of the most recent successful completion, or null if this poll type has never completed since server start. timer: type: object description: Poll duration statistics in milliseconds. Omitted when the poll type has never completed (lastCompleted is null). properties: last: type: integer description: Duration of the most recent completed poll (ms). average: type: integer description: Rolling average poll duration (ms). min: type: integer description: Minimum observed poll duration (ms). max: type: integer description: Maximum observed poll duration (ms). 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 ArpCache: type: object description: ARP cache of a node properties: timestamp: type: string format: date-time nullable: true description: When the cache was collected. Null when it has never been collected for this node. entries: type: array items: $ref: '#/components/schemas/ArpCacheEntry' ArpCacheEntry: type: object description: Single ARP cache entry properties: ipAddress: $ref: '#/components/schemas/InetAddress' macAddress: type: string description: MAC address in colon-separated notation vendor: type: string nullable: true description: NIC vendor resolved from the OUI database. Null when the prefix is not known. interfaceIndex: type: integer description: Interface index the entry was seen on (0 if unknown) interfaceName: type: string nullable: true description: Name of the matching interface object. Null when no interface object matches the index. nodeId: type: integer description: >- ID of the node owning this IP address, or 0 when no node matches or the caller has no read access to it. nodeName: type: string nullable: true description: Name of the node owning this IP address. Null when nodeId is 0. RoutingTable: type: object description: IP routing table of a node properties: timestamp: type: string format: date-time nullable: true description: When the table was collected. Null when it has never been collected for this node. entries: type: array items: $ref: '#/components/schemas/Route' Route: type: object description: Single IP routing table entry properties: destination: $ref: '#/components/schemas/InetAddress' nextHop: $ref: '#/components/schemas/InetAddress' interfaceIndex: type: integer description: Outgoing interface index (0 if unknown) interfaceName: type: string nullable: true description: Name of the matching interface object. Null when no interface object matches the index. type: type: integer description: "Route type, RFC1213 ipRouteType (1=other, 2=invalid, 3=direct, 4=indirect)" typeText: type: string description: Textual representation of the route type metric: type: integer description: Route metric protocol: type: integer description: "Routing protocol, RFC1213 ipRouteProto (2=local, 8=RIP, 13=OSPF, 14=BGP, ...)" protocolText: type: string description: Textual representation of the routing protocol SwitchForwardingDatabase: type: object description: Switch forwarding database (FDB) of a node properties: timestamp: type: string format: date-time nullable: true description: >- When the forwarding database was collected. Null when it has never been collected for this node. entries: type: array items: $ref: '#/components/schemas/ForwardingDatabaseEntry' ForwardingDatabaseEntry: type: object description: Single switch forwarding database entry properties: macAddress: type: string description: MAC address in colon-separated notation vendor: type: string nullable: true description: NIC vendor resolved from the OUI database. Null when the prefix is not known. bridgePort: type: integer description: Bridge port number (0 if unknown) interfaceIndex: type: integer description: Interface index (0 if unknown) interfaceName: type: string nullable: true description: >- Name of the matching interface object. Members of an Ethernet or LAG parent interface are reported under the parent's name. Null when no interface object matches the index. vlanId: type: integer description: VLAN ID (0 if unknown) nodeId: type: integer description: >- ID of the node owning this MAC address, or 0 when no node matches or the caller has no read access to it. nodeName: type: string nullable: true description: Name of the node owning this MAC address. Null when nodeId is 0. type: type: integer description: "Entry type, dot1dTpFdbStatus (3=dynamic, 5=static, 6=secure)" typeText: type: string description: Textual representation of the entry type 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' effectiveRights: allOf: - $ref: '#/components/schemas/EffectiveRights' description: | Access rights the calling user effectively has on this object. Present in object listing, sub-tree, search and query responses; absent where an object summary is embedded into another resource (alarms, log records, topology). guid: type: string format: uuid description: Object GUID id: type: integer description: Object ID ipAddress: $ref: '#/components/schemas/InetAddress' isInMaintenanceMode: type: boolean description: true if object is in maintenance mode isMaintenanceApplicable: type: boolean description: true if object can be placed into maintenance mode isMaintenanceScheduled: type: boolean description: true if object has pending scheduled maintenance name: type: string description: Object name timestamp: type: string format: date-time description: Object last change timestamp status: $ref: '#/components/schemas/Status' ObjectTreeNode: description: Object summary with recursively nested child objects. The `children` property is present only when the object has at least one accessible child matching the request filter. allOf: - $ref: '#/components/schemas/ObjectSummary' - type: object properties: children: type: array description: Nested child objects (recursive) items: $ref: '#/components/schemas/ObjectTreeNode' Status: type: integer enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 DataCollectionItem: type: object description: | Data collection item (DCI) definition. Covers both single-value items (`type: item`) and table DCIs (`type: table`). Enumeration properties are represented as symbolic names on output and accept either a symbolic name or the raw numeric code on input. Properties marked read-only are ignored in create/update requests. properties: id: type: integer readOnly: true description: DCI ID (assigned by the server) guid: type: string format: uuid readOnly: true description: Globally unique DCI identifier type: type: string enum: [item, table] default: item description: DCI type. Selected at creation; cannot be changed afterwards. name: type: string description: Metric/parameter name (required on create) description: type: string description: Human-readable DCI description origin: type: string enum: [internal, nxagent, snmp, websvc, push, winperf, smclp, script, ssh, mqtt, driver, modbus, ethernetip, cloud, otlp] description: Data origin status: type: string enum: [active, disabled, unsupported] description: DCI status dataType: type: string enum: [int32, uint32, int64, uint64, string, float, "null", counter32, counter64] description: Data type (single-value DCI only) transformedDataType: type: string enum: [int32, uint32, int64, uint64, string, float, "null", counter32, counter64] description: Data type after transformation (single-value DCI only) deltaCalculation: type: string enum: [none, simple, averagePerSecond, averagePerMinute] description: Delta calculation method (single-value DCI only) pollingScheduleType: type: string enum: [default, custom, advanced] description: Polling schedule type pollingInterval: type: string description: Polling interval expression (used when pollingScheduleType is custom) retentionType: type: string enum: [default, custom, none] description: Data retention type retentionTime: type: string description: Retention time expression (used when retentionType is custom) systemTag: type: string userTag: type: string comments: type: string transformationScript: type: string description: NXSL transformation script source sourceNode: type: integer description: Source (proxy) node ID, or 0 to disable snmpPort: type: integer snmpVersion: type: integer snmpContext: type: string snmpRawValueType: type: string enum: [none, int32, uint32, int64, uint64, double, ipAddr, macAddr, ip6Addr] description: SNMP raw value interpretation (single-value DCI only) multiplier: type: integer unitName: type: string mappingTableId: type: integer sampleCount: type: integer predictionEngine: type: string allThresholdsRearmEvent: type: integer aiHint: type: string aggregationDisabled: type: boolean hourlyRetention: type: integer dailyRetention: type: integer instanceDiscoveryMethod: type: string enum: [none, agentList, agentTable, snmpWalkValues, snmpWalkOids, script, winperf, webService, internalTable, smclpTargets, smclpProperties, push, otlp] instanceDiscoveryData: type: string instanceFilter: type: string description: NXSL instance filter script source instanceName: type: string instanceRetentionTime: type: integer perfTabSettings: type: string accessList: type: array description: Per-DCI access list (user/group IDs) items: type: integer thresholds: type: array description: Thresholds. When present in a request, replaces the whole set. items: $ref: '#/components/schemas/DciThreshold' columns: type: array description: Table columns (table DCI only). When present in a request, replaces the whole set. items: $ref: '#/components/schemas/DciTableColumn' templateId: type: integer readOnly: true templateItemId: type: integer readOnly: true DciThreshold: type: object description: Threshold definition for a single-value DCI properties: id: type: integer description: Threshold ID (0 or omitted for a new threshold; supply the existing id to preserve runtime state on update) activationEvent: type: string description: Event generated when the threshold is reached deactivationEvent: type: string description: Event generated when the threshold is rearmed function: type: string enum: [last, average, meanDeviation, diff, error, sum, script, absoluteDeviation, anomaly] condition: type: string enum: [less, lessOrEqual, equal, greaterOrEqual, greater, notEqual, like, notLike, iLike, iNotLike] value: type: string sampleCount: type: integer deactivationSampleCount: type: integer repeatInterval: type: integer regenerateOnValueChange: type: boolean disabled: type: boolean script: type: string DciTableColumn: type: object description: Column definition for a table DCI properties: name: type: string displayName: type: string snmpOid: type: string dataType: type: string enum: [int32, uint32, int64, uint64, string, float, "null", counter32, counter64] aggregationFunction: type: string enum: [last, min, max, average, sum] instanceColumn: type: boolean convertSnmpStringToHex: type: boolean 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 isMarkdown: type: boolean description: Whether the notification message body is markdown recipientAddress: type: string description: Recipient address (supports macros) emailSubject: type: string description: Email subject (supports macros) notificationChannelName: type: string description: Notification channel name command: type: string description: Action payload for command-type actions (type 0, 1, or 7). Exactly one of command/message/scriptName/data is present, selected by the action type. message: type: string description: Action payload for notification actions (type 3). scriptName: type: string description: Action payload for script actions (type 5). data: type: string description: Action payload for other action types (e.g. type 4, forward event). 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 isMarkdown: type: boolean description: Whether the notification message body is markdown 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 isMarkdown: type: boolean description: Whether the notification message body is markdown 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