openapi: 3.1.0 info: title: Portal API description: '**AI Activate is available only through a limited private preview and is not generally available.** See the AI Activate section below for its license and feature-flag prerequisites.' version: 0.1.0 paths: /auth/token: post: tags: - Auth summary: Authenticate description: 'Authenticate using one of the following methods: - **Service Keys (headers)**: Provide both `x-service-key` and `x-service-secret` headers - **User Keys (header)**: Provide `x-user-key` header - **OAuth2 Client Credentials (form body)**: POST `application/x-www-form-urlencoded` with `grant_type=client_credentials`, `client_id=`, `client_secret=` (RFC 6749 §4.4). Compatible with standard OAuth2 client libraries such as Grafana Infinity, Datadog, Splunk, and ServiceNow. Returns access and refresh tokens for subsequent API calls.' operationId: authorize_auth_token_post responses: '200': description: Authentication successful content: application/json: schema: $ref: '#/components/schemas/TokensDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ServiceKeyHeader: [] ServiceSecretHeader: [] - UserKeyHeader: [] - OAuth2ClientCredentials: [] requestBody: required: false content: application/x-www-form-urlencoded: schema: type: object required: - grant_type - client_id - client_secret properties: grant_type: type: string enum: - client_credentials description: Must be `client_credentials`. client_id: type: string description: Portal service key (equivalent to the `x-service-key` header). client_secret: type: string format: uuid description: Portal service secret (equivalent to the `x-service-secret` header). delete: tags: - Auth summary: Revoke Access Token description: 'Revoke the current access token and its entire token family. This invalidates the current access token and all associated refresh tokens, requiring the user to re-authenticate. Use this for logout functionality. Requires: Valid access token in Authorization header (Bearer )' operationId: revoke_auth_token_delete responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /auth/token/refresh: post: tags: - Auth summary: Refresh Access Token description: "Refresh an expired access token using a valid refresh token.\n\ \nWhen your access token expires, use this endpoint to obtain a new access\ \ token\nand refresh token pair without re-authenticating.\n\nArgs:\n body:\ \ Request containing the refresh token\n\nReturns:\n TokensDto: New access\ \ token and refresh token pair" operationId: refresh_auth_token_refresh_post requestBody: content: application/json: schema: $ref: '#/components/schemas/TokenRequestDto' required: true responses: '200': description: Token refreshed successfully content: application/json: schema: $ref: '#/components/schemas/TokensDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /auth/mcp: post: tags: - Auth summary: Issue MCP-scoped tokens description: 'Mint MCP-scoped tokens and log activity. Authorization-Mcp header must contain the user''s Portal access token (the cookie value forwarded by the webbff). WebBFF completes the MCP callback server-side so WebAPI does not depend on the MCP stack URL.' operationId: mcp_authorize_auth_mcp_post requestBody: content: application/json: schema: $ref: '#/components/schemas/McpAuthorizeRequest' required: true responses: '200': description: MCP-scoped tokens issued successfully content: application/json: schema: $ref: '#/components/schemas/TokensDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - APIKeyHeader: [] /health: get: tags: - Health summary: Check API Health operationId: get_health_get responses: '200': description: Health check completed content: application/json: schema: $ref: '#/components/schemas/HealthResponseDto' /account: get: tags: - Account Management summary: Get Account Information operationId: get_account_information_account_get responses: '200': description: Account information retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AccountInformationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] patch: tags: - Account Management summary: Update Account Information operationId: update_account_information_account_patch requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAccountInformationDto' required: true responses: '200': description: Account information updated successfully content: application/json: schema: $ref: '#/components/schemas/AccountInformationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /account/license: get: tags: - Account Management summary: Get Account License Information operationId: get_account_license_account_license_get responses: '200': description: Account license information retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AccountLicenseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /account/ai_activate: get: tags: - Account Management summary: Get AI Activate Account Info description: Get AI Activate subscription limits and consumption for the account. operationId: get_account_ai_activate_info_account_ai_activate_get responses: '200': description: AI Activate account info retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateAccountInfoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /account/enterprise_search: get: tags: - Account Management summary: Get Enterprise Search Account Info description: Get Enterprise Search subscription limits and consumption for the account. operationId: get_account_enterprise_search_info_account_enterprise_search_get responses: '200': description: Enterprise Search account info retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchAccountInfoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /activity-logs/records: get: tags: - Activity Logs summary: Get Activity Logs operationId: get_records_activity_logs_records_get security: - HTTPBearer: [] parameters: - name: start_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' title: Start Date - name: end_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' title: End Date - name: user_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: User Id - name: target in: query required: false schema: anyOf: - $ref: '#/components/schemas/ActivityLogTarget' - type: 'null' title: Target - name: action in: query required: false schema: anyOf: - $ref: '#/components/schemas/ActivityLogAction' - type: 'null' title: Action - name: transaction_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Transaction Id - name: search in: query required: false schema: anyOf: - type: string - type: 'null' title: Search - name: limit in: query required: false schema: type: integer default: 500 title: Limit - name: iterator_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id - name: page in: query required: false schema: anyOf: - type: integer - type: 'null' title: Page - name: sort_by in: query required: false schema: $ref: '#/components/schemas/ActivityLogSortBy' default: timestamp - name: sort_direction in: query required: false schema: $ref: '#/components/schemas/SortDirection' default: descending responses: '200': description: Activity logs retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ActivityLogResultDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /activity-logs/records/{record_id}: get: tags: - Activity Logs summary: Get Activity Log operationId: get_record_activity_logs_records__record_id__get security: - HTTPBearer: [] parameters: - name: record_id in: path required: true schema: type: string format: uuid title: Record Id responses: '200': description: Activity log retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ActivityLogDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /ai_activate/inventories/{volume_id}: get: tags: - AI Activate summary: Get Ai Activate Inventory description: Get AI Activate inventory for a specific volume. operationId: get_ai_activate_inventory_ai_activate_inventories__volume_id__get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: AI Activate inventory retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateInventoryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /ai_activate/inventories: get: tags: - AI Activate summary: Get Ai Activate Inventories description: Get AI Activate volume inventories for the account. operationId: get_ai_activate_inventories_ai_activate_inventories_get security: - HTTPBearer: [] parameters: - name: volume_name in: query required: false schema: anyOf: - type: string - type: 'null' description: Case-insensitive Search string to filter inventories by volume name. examples: - finance - prod-volume title: Volume Name description: Case-insensitive Search string to filter inventories by volume name. - name: status in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/AiActivateInventoryStatus' - type: 'null' description: Filter inventories by their status. 'Not Activated' is not a valid filter value because non-activated volumes are excluded from inventory results. examples: - - Active - Volume Inventory In Progress title: Status description: Filter inventories by their status. 'Not Activated' is not a valid filter value because non-activated volumes are excluded from inventory results. - name: provider in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter inventories by their index execution provider. examples: - - AWS - Azure title: Provider description: Filter inventories by their index execution provider. - name: volume_provider in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter inventories by their source volume provider. examples: - - Amazon S3 - Azure title: Volume Provider description: Filter inventories by their source volume provider. - name: volume_region in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter inventories by their volume region. examples: - - us-east-1 - centralus title: Volume Region description: Filter inventories by their volume region. - name: region in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter inventories by their index execution region. examples: - - us-east-1 - centralus title: Region description: Filter inventories by their index execution region. responses: '200': description: AI Activate inventories retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateInventoriesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' post: tags: - AI Activate summary: Create Ai Activate Inventory description: Create AI Activate inventory indexing for a volume. operationId: create_ai_activate_inventory_ai_activate_inventories_post security: - HTTPBearer: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiActivateCreateInventoryRequestBodyDto' responses: '201': description: AI Activate inventory created content: application/json: schema: $ref: '#/components/schemas/AiActivateCreateInventoryResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /ai_activate/indexes: get: tags: - AI Activate summary: Get Ai Activate Indexes description: Get AI Activate content indexes for the account. operationId: get_ai_activate_indexes_ai_activate_indexes_get responses: '200': description: AI Activate indexes retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] post: tags: - AI Activate summary: Create Ai Activate Index description: Create AI Activate content index for a volume. operationId: create_ai_activate_index_ai_activate_indexes_post requestBody: content: application/json: schema: $ref: '#/components/schemas/AiActivateCreateIndexRequestBodyDto' required: true responses: '202': description: AI Activate content indexing started content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexConfigResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /ai_activate/volumes: get: tags: - AI Activate summary: Get Ai Activate Volumes description: Get every volume on the account with its AI Activate indexing state and eligibility. operationId: get_ai_activate_volumes_ai_activate_volumes_get responses: '200': description: AI Activate volumes retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateVolumesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /ai_activate/indexes/mcp: get: tags: - AI Activate summary: Get Mcp Volumes description: List volumes eligible for MCP with their current mcp_enabled state. operationId: get_mcp_volumes_ai_activate_indexes_mcp_get responses: '200': description: MCP volume list retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateMcpVolumesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /ai_activate/mcp_url: get: tags: - AI Activate summary: Get Mcp Url description: Get the customer-facing AI Activate MCP URL for the account. operationId: get_mcp_url_ai_activate_mcp_url_get responses: '200': description: AI Activate MCP URL retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateMcpUrlDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /ai_activate/indexes/{volume_id}: get: tags: - AI Activate summary: Get Ai Activate Index Config description: Get the AI Activate index details (volume metadata + search configuration) for a volume. operationId: get_ai_activate_index_config_ai_activate_indexes__volume_id__get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: AI Activate index details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' post: tags: - AI Activate summary: Create Ai Activate Index Config description: Create the AI Activate search configuration for a volume. Returns 409 if one already exists. operationId: create_ai_activate_index_config_ai_activate_indexes__volume_id__post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexConfigDto' responses: '201': description: AI Activate index configuration created content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - AI Activate summary: Update Ai Activate Index Config description: 'Partially update the AI Activate search configuration for a volume. Returns 404 if none exists. Send `deletion_requested: false` to cancel a pending removal — 409 when none is pending, and 400 once NOC has started tearing the volume down.' operationId: update_ai_activate_index_config_ai_activate_indexes__volume_id__patch security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexUpdateDto' responses: '200': description: AI Activate index configuration updated content: application/json: schema: $ref: '#/components/schemas/AiActivateIndexDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - AI Activate summary: Delete Ai Activate Index description: 'Request removal (soft delete) of a volume from the AI Activate service. This is a soft delete: access stops immediately, but nothing is torn down until `removal_deadline_at` passes. Until then it can be undone by PATCHing this resource with `deletion_requested: false`. Repeating the request is a no-op and returns the existing deadline.' operationId: delete_ai_activate_index_ai_activate_indexes__volume_id__delete security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: AI Activate volume removal requested content: application/json: schema: $ref: '#/components/schemas/AiActivateVolumeRemovalDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /ai_activate/indexes/{volume_id}/mcp: get: tags: - AI Activate summary: Get Mcp Volume Config description: Get MCP query-scope configuration for a single indexed volume. operationId: get_mcp_volume_config_ai_activate_indexes__volume_id__mcp_get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: MCP configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateMcpVolumeConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - AI Activate summary: Update Mcp Volume Config description: Partially update the MCP query-scope configuration for a single indexed volume. operationId: update_mcp_volume_config_ai_activate_indexes__volume_id__mcp_patch security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AiActivateMcpVolumeConfigUpdateDto' responses: '200': description: MCP configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateMcpVolumeConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enterprise-search/inventories: get: tags: - Enterprise Search summary: Get Enterprise Search Inventories operationId: get_enterprise_search_inventories_enterprise_search_inventories_get responses: '200': description: Enterprise search inventories retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeInventoriesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - Enterprise Search summary: Create Enterprise Search Inventory operationId: create_enterprise_search_inventory_enterprise_search_inventories_post requestBody: content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchCreateInventoryRequestDto' required: true responses: '201': description: Enterprise search inventory created content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeInventoryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /enterprise-search/inventories/{edge_id}: get: tags: - Enterprise Search summary: Get Enterprise Search Inventory operationId: get_enterprise_search_inventory_enterprise_search_inventories__edge_id__get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Enterprise search inventory retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeInventoryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Enterprise Search summary: Update Enterprise Search Inventory operationId: update_enterprise_search_inventory_enterprise_search_inventories__edge_id__patch security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchUpdateInventoryRequestDto' responses: '200': description: Enterprise search inventory updated content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeInventoryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enterprise-search/edges/{edge_id}/shares: get: tags: - Enterprise Search summary: Get Edge Shares description: "Get every SMB share an appliance exposes for the volumes it connects.\n\ \nAnswers regardless of inventory state, so the Configure page can list an\n\ eligible appliance's shares before anyone has inventoried it — the roster\ \ comes\nfrom Web Access configuration, not from Search indexing. Only ``file_count``\n\ waits on an inventory run, and it is always null here.\n\nReturns 200 with\ \ an empty list for an appliance that exposes no shares.\n\nArgs:\n edge_id:\ \ The ID of the appliance whose shares should be returned\n\nReturns:\n \ \ EnterpriseSearchEdgeSharesResponseDto: The appliance's share roster" operationId: get_edge_shares_enterprise_search_edges__edge_id__shares_get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Appliance shares retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeSharesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /enterprise-search/repositories: get: tags: - Enterprise Search summary: Get Enterprise Search Repositories description: 'List every appliance''s search repository, without the per-volume detail. Each item''s ``status`` is rolled up from that appliance''s volume indexes.' operationId: get_enterprise_search_repositories_enterprise_search_repositories_get responses: '200': description: Enterprise search repositories retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchEdgeRepositoriesDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - Enterprise Search summary: Create Enterprise Search Repository description: Create the search repository for an appliance. operationId: create_enterprise_search_repository_enterprise_search_repositories_post requestBody: content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryCreateRequestDto' required: true responses: '201': description: Enterprise search repository created content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryEdgeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /enterprise-search/repositories/{edge_id}: get: tags: - Enterprise Search summary: Get Enterprise Search Repository description: Get one appliance's search repository, including its per-volume indexes. operationId: get_enterprise_search_repository_enterprise_search_repositories__edge_id__get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Enterprise search repository retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryEdgeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Enterprise Search summary: Update Enterprise Search Repository description: 'Update one appliance''s search repository: pause/resume search, or cancel a pending removal. ``queued_deletion_time=null`` resumes a soft delete; ``search_paused`` toggles pause. Returns 400 when the appliance has no activated repository, 404 when the repository no longer exists (including a resume whose removal window has already elapsed), 409 when the repository is queued for deletion (pause), and 503 when pausing an unreachable appliance.' operationId: update_enterprise_search_repository_enterprise_search_repositories__edge_id__patch security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryUpdateRequestDto' responses: '200': description: Enterprise search repository updated content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryEdgeDto' '503': description: Pause failed because the appliance is unreachable '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - Enterprise Search summary: Delete Enterprise Search Repository description: 'Queue an appliance''s search repository for deletion. This is a soft delete, which is why it answers with the repository rather than an empty body: repository status changes to ``removal_pending`` and ``queued_deletion_time`` gives when the configuration is permanently deleted, so the caller can show what is pending without a follow-up GET. Volume rows have no lifecycle status. Gated by ``can_delete_enterprise_search_configuration`` — a stronger permission than the other repository writes. The data layer requests the per-volume NOC removals and records the activity log.' operationId: delete_enterprise_search_repository_enterprise_search_repositories__edge_id__delete security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '202': description: Enterprise search repository queued for deletion content: application/json: schema: $ref: '#/components/schemas/EnterpriseSearchRepositoryEdgeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /configuration/sso: get: tags: - Configuration summary: Get SSO Configuration operationId: get_sso_config_configuration_sso_get responses: '200': description: SSO configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SSOConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] put: tags: - Configuration summary: Set SSO Configuration operationId: set_sso_config_configuration_sso_put requestBody: content: application/json: schema: $ref: '#/components/schemas/SSOConfigDto' required: true responses: '200': description: SSO configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/SSOConfigUpdateResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /configuration/web_access_sso: get: tags: - Configuration summary: Get Web Access SSO Configuration operationId: get_web_access_sso_config_configuration_web_access_sso_get responses: '200': description: Web Access SSO configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/WebAccessSSOConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] put: tags: - Configuration summary: Set Web Access SSO Configuration operationId: set_web_access_sso_config_configuration_web_access_sso_put requestBody: content: application/json: schema: $ref: '#/components/schemas/WebAccessSSOConfigDto' required: true responses: '200': description: Web Access SSO configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/WebAccessSSOConfigUpdateResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] delete: tags: - Configuration summary: Delete Web Access SSO Configuration operationId: delete_web_access_sso_config_configuration_web_access_sso_delete responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /configuration/s3_edge: get: tags: - Configuration summary: Get S3 Edge Configuration operationId: get_s3_edge_config_configuration_s3_edge_get responses: '200': description: S3 Edge configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/S3EdgeConfigResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] post: tags: - Configuration summary: Set S3 Edge Configuration operationId: set_s3_edge_config_configuration_s3_edge_post requestBody: content: application/json: schema: $ref: '#/components/schemas/S3EdgeConfigDto' required: true responses: '200': description: S3 Edge configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/S3EdgeConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] delete: tags: - Configuration summary: Delete S3 Edge Configuration operationId: delete_s3_edge_config_configuration_s3_edge_delete responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /configuration/software: get: tags: - Configuration summary: Get Software Downloads Configuration operationId: get_software_downloads_configuration_configuration_software_get responses: '200': description: Software downloads configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SoftwareDownloadsConfigurationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] put: tags: - Configuration summary: Update Software Downloads Configuration operationId: update_software_downloads_configuration_configuration_software_put requestBody: content: application/json: schema: $ref: '#/components/schemas/SoftwareDownloadsConfigurationDto' required: true responses: '200': description: Software downloads configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/SoftwareDownloadsConfigurationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /configuration/ai_activate: get: tags: - Configuration summary: Get AI Activate Configuration description: Get AI Activate remote support configuration. operationId: get_ai_activate_remote_support_configuration_ai_activate_get responses: '200': description: AI Activate remote support configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateRemoteSupportDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] patch: tags: - Configuration summary: Update AI Activate Configuration description: Update AI Activate remote support configuration. operationId: update_ai_activate_remote_support_configuration_ai_activate_patch requestBody: content: application/json: schema: $ref: '#/components/schemas/AiActivateRemoteSupportDto' required: true responses: '200': description: AI Activate remote support configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/AiActivateRemoteSupportDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /configuration/support/portal: get: tags: - Supportability summary: Get Portal Remote Support Status operationId: get_portal_support_status_configuration_support_portal_get responses: '200': description: Portal remote support status retrieved successfully content: application/json: schema: $ref: '#/components/schemas/PortalSupportStatusDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - Supportability summary: Configure Portal Remote Access description: Enable or disable portal-level remote access for the account. operationId: configure_portal_remote_access_configuration_support_portal_post requestBody: content: application/json: schema: $ref: '#/components/schemas/PortalSupportConfigurationRequestDto' required: true responses: '200': description: Portal remote access configuration updated content: application/json: schema: $ref: '#/components/schemas/PortalSupportConfigurationResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /configuration/support/appliances: get: tags: - Supportability summary: List Appliance Support Status description: 'This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. Optional filters include `search` (case-insensitive appliance name substring), `enabled` (remote-support state), and `appliance_ids` (specific appliances). Results are cursor-paginated: to fetch the next page, reuse the same filter, sort, and limit values with the prior response''s `iterator_id`.' operationId: list_appliance_support_configuration_support_appliances_get security: - HTTPBearer: [] parameters: - name: search in: query required: false schema: anyOf: - type: string - type: 'null' title: Search - name: enabled in: query required: false schema: anyOf: - type: array items: type: boolean - type: 'null' description: Filter by remote-support enabled state title: Enabled description: Filter by remote-support enabled state - name: appliance_ids in: query required: false schema: anyOf: - type: array items: type: string format: uuid - type: 'null' description: Restrict to these appliance UUIDs title: Appliance Ids description: Restrict to these appliance UUIDs - name: sort_by in: query required: false schema: $ref: '#/components/schemas/ApplianceSupportSortBy' default: appliance_name - name: sort_direction in: query required: false schema: $ref: '#/components/schemas/SortDirection' default: ascending - name: iterator_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' description: Cursor from a prior response's metadata. When set, resend the same search/enabled/appliance_ids/sort_by/sort_direction/limit used to create the cursor (only 'page' may be omitted); a mismatch returns 400. title: Iterator Id description: Cursor from a prior response's metadata. When set, resend the same search/enabled/appliance_ids/sort_by/sort_direction/limit used to create the cursor (only 'page' may be omitted); a mismatch returns 400. - name: limit in: query required: false schema: type: integer maximum: 200 exclusiveMinimum: 0 default: 50 title: Limit - name: page in: query required: false schema: anyOf: - type: integer minimum: 1 - type: 'null' title: Page responses: '200': description: Appliance support status retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ApplianceSupportListDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' post: tags: - Supportability summary: Configure Appliance Remote Access description: This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. operationId: set_appliance_support_bridge_configuration_support_appliances_post security: - HTTPBearer: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceSupportBridgeCommandRequestDto' responses: '202': description: Support bridge command accepted content: application/json: schema: $ref: '#/components/schemas/ApplianceSupportBridgeJobAcceptedDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /cloud-credentials: get: tags: - Cloud Credentials summary: Get Cloud Credentials description: 'Get paginated cloud credentials with optional filters. Supports cursor-based pagination with keyset seek for efficient forward navigation.' operationId: get_cloud_credentials_cloud_credentials_get security: - HTTPBearer: [] parameters: - name: search in: query required: false schema: anyOf: - type: string - type: 'null' title: Search - name: providers in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/NocCloudProvider' - type: 'null' description: Filter by cloud provider shortnames title: Providers description: Filter by cloud provider shortnames - name: appliance_ids in: query required: false schema: anyOf: - type: array items: type: string format: uuid - type: 'null' description: Filter by appliance IDs title: Appliance Ids description: Filter by appliance IDs - name: volume_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by associated volume IDs title: Volume Ids description: Filter by associated volume IDs - name: sort_by in: query required: false schema: $ref: '#/components/schemas/CloudCredentialSortBy' default: name - name: sort_direction in: query required: false schema: $ref: '#/components/schemas/SortDirection' default: ascending - name: iterator_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id - name: limit in: query required: false schema: type: integer exclusiveMinimum: 0 default: 50 title: Limit - name: page in: query required: false schema: anyOf: - type: integer minimum: 1 - type: 'null' title: Page responses: '200': description: Paginated list of cloud credentials content: application/json: schema: $ref: '#/components/schemas/CloudCredentialsDto' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' post: tags: - Cloud Credentials summary: Create Cloud Credential operationId: create_credential_cloud_credentials_post security: - HTTPBearer: [] requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/AWSS3CredentialRequest' - $ref: '#/components/schemas/AWSS3GovCloudCredentialRequest' - $ref: '#/components/schemas/S3CompatibleCredentialRequest' - $ref: '#/components/schemas/AzureCredentialRequest' - $ref: '#/components/schemas/GCSCredentialRequest' - $ref: '#/components/schemas/IBMCredentialRequest' - $ref: '#/components/schemas/HCPCredentialRequest' - $ref: '#/components/schemas/CleversafeCredentialRequest' - $ref: '#/components/schemas/ViprCredentialRequest' discriminator: propertyName: cred_type mapping: amazons3: '#/components/schemas/AWSS3CredentialRequest' amazons3gov: '#/components/schemas/AWSS3GovCloudCredentialRequest' s3_compatible: '#/components/schemas/S3CompatibleCredentialRequest' azure: '#/components/schemas/AzureCredentialRequest' googles3: '#/components/schemas/GCSCredentialRequest' ibmcos: '#/components/schemas/IBMCredentialRequest' hcp: '#/components/schemas/HCPCredentialRequest' cleversafe: '#/components/schemas/CleversafeCredentialRequest' vipr: '#/components/schemas/ViprCredentialRequest' title: Request responses: '202': description: Cloud credential creation accepted; command dispatched to edge content: application/json: schema: $ref: '#/components/schemas/TaskCreatedDto' '404': description: Appliance with the given ID does not exist '503': description: Edge appliance is unreachable (no recent heartbeat) '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /cloud-credentials/{credential_id}: get: tags: - Cloud Credentials summary: Get Cloud Credential by ID description: Get a single cloud credential by its Portal-assigned credential ID. operationId: get_cloud_credentials_credential_cloud_credentials__credential_id__get security: - HTTPBearer: [] parameters: - name: credential_id in: path required: true schema: type: string format: uuid title: Credential Id responses: '200': description: Cloud credential retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CloudCredentialDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - Cloud Credentials summary: Delete Cloud Credential operationId: delete_cloud_credential_cloud_credentials__credential_id__delete security: - HTTPBearer: [] parameters: - name: credential_id in: path required: true schema: type: string format: uuid title: Credential Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CloudCredentialDeleteRequest' responses: '202': description: Delete accepted. `task_ids` lists tasks dispatched to reachable filers; `failed_unreachable` lists per-filer rows pre-created in `failed` state because the filer was offline at request time. content: application/json: schema: $ref: '#/components/schemas/CloudCredentialDeleteResponseDto' '503': description: All targeted appliances are unreachable; no tasks were created. '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Cloud Credentials summary: Update Cloud Credential operationId: update_credential_cloud_credentials__credential_id__patch security: - HTTPBearer: [] parameters: - name: credential_id in: path required: true schema: type: string format: uuid title: Credential Id requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/AWSS3CredentialUpdateRequest' - $ref: '#/components/schemas/AWSS3GovCloudCredentialUpdateRequest' - $ref: '#/components/schemas/S3CompatibleCredentialUpdateRequest' - $ref: '#/components/schemas/AzureCredentialUpdateRequest' - $ref: '#/components/schemas/GCSCredentialUpdateRequest' - $ref: '#/components/schemas/IBMCredentialUpdateRequest' - $ref: '#/components/schemas/HCPCredentialUpdateRequest' - $ref: '#/components/schemas/ViprCredentialUpdateRequest' discriminator: propertyName: cred_type mapping: amazons3: '#/components/schemas/AWSS3CredentialUpdateRequest' amazons3gov: '#/components/schemas/AWSS3GovCloudCredentialUpdateRequest' s3_compatible: '#/components/schemas/S3CompatibleCredentialUpdateRequest' azure: '#/components/schemas/AzureCredentialUpdateRequest' googles3: '#/components/schemas/GCSCredentialUpdateRequest' ibmcos: '#/components/schemas/IBMCredentialUpdateRequest' hcp: '#/components/schemas/HCPCredentialUpdateRequest' vipr: '#/components/schemas/ViprCredentialUpdateRequest' title: Request responses: '202': description: Credential update accepted; commands dispatched to reachable appliances content: application/json: schema: $ref: '#/components/schemas/CloudCredentialUpdateResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /edges: get: tags: - Edge Appliances (Edge) summary: Get Edges description: "Get all Edge appliances for the account.\n\nReturns a lightweight\ \ Edge list by default. Detailed rows require an\nexplicit ``detailed=true``\ \ request for Portal-synced appliances.\n\nArgs:\n s3_edge_enabled: Filter\ \ by S3 Edge service status (enabled/disabled)\n file_iq_enabled: Filter\ \ by File IQ service status (enabled/disabled)\n synced: Filter by database\ \ synchronization status.\n detailed: Include EventHub-backed detail fields.\ \ Requires\n ``synced=true``.\n\nReturns:\n EdgesDto | EdgeDetailsDto:\ \ Edge appliances matching the requested shape." operationId: get_edges_edges_get security: - HTTPBearer: [] parameters: - name: s3_edge_enabled in: query required: false schema: anyOf: - type: boolean - type: 'null' title: S3 Edge Enabled - name: file_iq_enabled in: query required: false schema: anyOf: - type: boolean - type: 'null' title: File Iq Enabled - name: synced in: query required: false schema: anyOf: - type: boolean - type: 'null' title: Synced - name: detailed in: query required: false schema: type: boolean default: false title: Detailed responses: '200': description: Edge appliances retrieved successfully content: application/json: schema: anyOf: - $ref: '#/components/schemas/EdgesDto' - $ref: '#/components/schemas/EdgeDetailsDto' - $ref: '#/components/schemas/EdgesDto' - $ref: '#/components/schemas/EdgeDetailsDto' title: Response 200 Get Edges Edges Get '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}/refresh: post: tags: - Edge Appliances (Edge) summary: Refresh Edge appliance description: Refresh one appliance license and request a full configuration dump. operationId: refresh_edge_edges__edge_id__refresh_post security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '202': description: Appliance refresh accepted content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}: get: tags: - Edge Appliances (Edge) summary: Get Edge description: "Get the consolidated detail read model for a specific Edge appliance.\n\ \nArgs:\n edge_id: The unique identifier of the Edge appliance\n\nReturns:\n\ \ EdgeDto: Detailed information about the Edge appliance" operationId: get_edges_edge_edges__edge_id__get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Edge appliance retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EdgeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}/volumes: get: tags: - Edge Appliances (Edge) summary: Get Edge Volumes description: "Get every volume the Edge appliance connects, owned or remotely\ \ mounted.\n\nArgs:\n edge_id: The unique identifier of the Edge appliance\n\ \nReturns:\n EdgeVolumesResponseDto: The appliance's volumes, sorted by\ \ name" operationId: get_edge_volumes_edges__edge_id__volumes_get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Volumes connected to the Edge appliance retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EdgeVolumesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}/description: patch: tags: - Edge Appliances (Edge) summary: Update Edge Description description: Request an appliance display-name update. operationId: update_edge_description_edges__edge_id__description_patch security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEdgeDescriptionDto' responses: '202': description: Appliance description update accepted content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}/services/fiq: get: tags: - Edge Appliances (Edge) summary: Get Edge FIQ Service description: "Get the FIQ service configuration for an Edge appliance.\n\nThe\ \ FIQ service enables forwarding of events from Edge appliances\nto connected\ \ File IQ appliances for monitoring and analytics.\n\nArgs:\n edge_id:\ \ The unique identifier of the Edge appliance\n\nReturns:\n EdgeFiqServiceDto:\ \ FIQ service configuration" operationId: get_edges_edge_fiq_edges__edge_id__services_fiq_get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: FIQ service configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EdgeFiqServiceDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Edge Appliances (Edge) summary: Update Edge FIQ Service description: "Update the FIQ service configuration for an Edge appliance.\n\n\ Enable or disable event forwarding and configure the target File IQ appliance.\n\ Requires the can_configure_edge_fiq_service permission.\n\nArgs:\n edge_id:\ \ The unique identifier of the Edge appliance\n body: FIQ service configuration\ \ update (enabled status and/or connected File IQ serial)\n\nReturns:\n \ \ EdgeFiqServiceDto: Updated FIQ service configuration" operationId: update_edges_edge_fiq_edges__edge_id__services_fiq_patch security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEdgeFiqServiceDto' responses: '200': description: FIQ service configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/EdgeFiqServiceDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/{edge_id}/services/s3_edge: get: tags: - Edge Appliances (Edge) summary: Get S3 Edge Status description: "Get the S3 Edge service configuration for an Edge appliance.\n\ \nS3 Edge provides S3-compatible object storage access to Nasuni volumes.\n\ Requires the can_view_edge_s3_edge_service permission.\n\nArgs:\n edge_id:\ \ The unique identifier of the Edge appliance\n\nReturns:\n EdgeS3EdgeConfigDto:\ \ S3 Edge service configuration including enabled status" operationId: get_edge_s3_edge_status_edges__edge_id__services_s3_edge_get security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: S3 Edge service configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EdgeS3EdgeConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Edge Appliances (Edge) summary: Enable/Disable S3 Edge Status description: "Enable or disable the S3 Edge service for an Edge appliance.\n\ \nS3 Edge provides S3-compatible object storage access to Nasuni volumes.\n\ Requires the can_configure_edge_s3_edge_service permission.\n\nArgs:\n \ \ edge_id: The unique identifier of the Edge appliance\n body: S3 Edge\ \ configuration with enabled status\n\nReturns:\n EdgeS3EdgeConfigDto:\ \ Updated S3 Edge service configuration" operationId: update_edge_s3_edge_status_edges__edge_id__services_s3_edge_patch security: - HTTPBearer: [] parameters: - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EdgeS3EdgeConfigDto' responses: '200': description: S3 Edge service configuration updated successfully content: application/json: schema: $ref: '#/components/schemas/EdgeS3EdgeConfigDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /edges/diagnostics: post: tags: - Edge Appliances (Edge) summary: Send Appliance Diagnostics description: 'Queue diagnostic bundle collection on the given appliances, one task each. Returns as soon as the commands are dispatched; poll `GET /tasks/{task_id}` for outcome.' operationId: send_appliance_diagnostics_edges_diagnostics_post requestBody: content: application/json: schema: $ref: '#/components/schemas/SendDiagnosticsRequestDto' required: true responses: '202': description: Diagnostics dispatch accepted content: application/json: schema: $ref: '#/components/schemas/SendDiagnosticsResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /encryption-keys: get: tags: - Encryption Keys summary: Get Encryption Keys description: 'Get non-backup encryption keys for one appliance. Returns HTTP 404 when the appliance is unknown to Portal.' operationId: get_encryption_keys_encryption_keys_get security: - HTTPBearer: [] parameters: - name: edge_id in: query required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Encryption keys fetched successfully content: application/json: schema: $ref: '#/components/schemas/EncryptionKeysResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /fiq_appliances/{file_iq_serial}: get: tags: - File IQ Appliances (File IQ) summary: Get File IQ Appliance operationId: get_fiq_appliances_fiq_fiq_appliances__file_iq_serial__get security: - HTTPBearer: [] parameters: - name: file_iq_serial in: path required: true schema: type: string format: uuid title: File Iq Serial responses: '200': description: File IQ appliance retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FiqApplianceDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - File IQ Appliances (File IQ) summary: Update File IQ Appliance operationId: update_fiq_appliances_fiq_fiq_appliances__file_iq_serial__patch security: - HTTPBearer: [] parameters: - name: file_iq_serial in: path required: true schema: type: string format: uuid title: File Iq Serial requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FiqApplianceUpdateDto' responses: '200': description: File IQ appliance updated successfully content: application/json: schema: $ref: '#/components/schemas/FiqApplianceDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /fiq_appliances: get: tags: - File IQ Appliances (File IQ) summary: Get File IQ Appliances operationId: get_fiq_appliances_fiq_appliances_get responses: '200': description: File IQ appliances retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FiqsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /gfa/api_keys: get: tags: - Global File Accelerator (GFA) summary: Get GFA API Keys operationId: get_gfa_api_keys_gfa_api_keys_get responses: '200': description: GFA API keys retrieved successfully content: application/json: schema: $ref: '#/components/schemas/GfaApiKeysResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - Global File Accelerator (GFA) summary: Generate GFA API Key operationId: generate_gfa_api_key_gfa_api_keys_post responses: '200': description: GFA API key generated successfully content: application/json: schema: $ref: '#/components/schemas/GfaApiKeyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /gfa/api_keys/{api_key}: delete: tags: - Global File Accelerator (GFA) summary: Delete GFA API Key operationId: delete_gfa_api_key_gfa_api_keys__api_key__delete security: - HTTPBearer: [] parameters: - name: api_key in: path required: true schema: type: string format: uuid title: Api Key responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /uaas/stacks: get: tags: - UniFS As A Service (UaaS) summary: Get UaaS Stacks description: Get the list of all UaaS Stacks in the account. operationId: get_stacks_uaas_stacks_get responses: '200': description: UaaS stacks retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UaasStacksDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /uaas/stacks/{stack_id}: get: tags: - UniFS As A Service (UaaS) summary: Get UaaS Stack description: Get details of a specific UaaS Stack by its ID operationId: get_stack_uaas_stacks__stack_id__get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id responses: '200': description: UaaS stack retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UaasStackDetailDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - UniFS As A Service (UaaS) summary: Update UaaS Stack description: Update UaaS stack configuration. Accepts partial updates with at least one field required. operationId: update_stack_uaas_stacks__stack_id__patch security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UaasStackUpdateDetailDto' responses: '200': description: UaaS stack updated successfully content: application/json: schema: $ref: '#/components/schemas/UaasStackDetailDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /uaas/stacks/{stack_id}/nds: get: tags: - UniFS As A Service (UaaS) summary: Get NDS Configuration for an UaaS Stack description: Get NDS configuration for a specific UaaS Stack. operationId: get_stack_nds_uaas_stacks__stack_id__nds_get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasStackNdsDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - UniFS As A Service (UaaS) summary: Update NDS Configuration description: Update NDS configuration (azure, aws settings). operationId: update_nds_config_uaas_stacks__stack_id__nds_patch security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UaasUpdateNdsConfigDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasStackNdsConfigDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/volumes: get: tags: - UniFS As A Service (UaaS) summary: List Stack Volumes description: Get all NDS-connected volumes for a UaaS Stack. operationId: get_stack_volumes_uaas_stacks__stack_id__volumes_get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/NdsVolumesResponseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/volumes/{volume_id}: get: tags: - UniFS As A Service (UaaS) summary: Get Stack Volume description: Get a specific volume for a UaaS Stack. operationId: get_stack_volume_uaas_stacks__stack_id__volumes__volume_id__get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasVolumeNdsDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - UniFS As A Service (UaaS) summary: Add a Volume to Stack description: 'Add a volume to the stack. Creates a registration task and sends a command to the edge. Returns a task DTO that can be queried to check the registration status.' operationId: add_stack_volume_uaas_stacks__stack_id__volumes__volume_id__post security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UaasVolumeNdsDto' responses: '202': description: Volume registration accepted; command dispatched to edge content: application/json: schema: $ref: '#/components/schemas/TaskDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - UniFS As A Service (UaaS) summary: Update a Stack Volume description: Update a volume on the stack. Handles path rules as a partial update. operationId: update_stack_volume_uaas_stacks__stack_id__volumes__volume_id__patch security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateUaasVolumeNdsDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasVolumeNdsDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - UniFS As A Service (UaaS) summary: Remove a Volume from Stack (legacy sync) description: 'Remove a volume from the NDS stack configuration synchronously. Preserved as a backward-compatible v1 contract for existing clients that still deserialize ``UaasVolumeNdsDto`` and expect a 200 response. New clients should use ``POST /stacks/{stack_id}/volumes/{volume_id}:unregister``, which dispatches the ``uaas_volume_unregister`` command to the edge and returns a ``TaskSummaryDto`` for asynchronous tracking.' operationId: delete_stack_volume_uaas_stacks__stack_id__volumes__volume_id__delete security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasVolumeNdsDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/volumes/{volume_id}:unregister: post: tags: - UniFS As A Service (UaaS) summary: Asynchronously Unregister a Volume from Stack description: 'Start an asynchronous unregistration for a UaaS-attached volume. Creates an ``uaas_volume_unregister`` task, dispatches the corresponding edge command, and returns a customer-safe ``TaskSummaryDto`` for polling. The NOC NDS configuration is only updated once the edge confirms via eventhub. Legacy synchronous callers continue to work through the ``DELETE`` route above.' operationId: start_stack_volume_unregistration_uaas_stacks__stack_id__volumes__volume_id__unregister_post security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '202': description: Volume unregistration accepted; command dispatched to edge content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/sraas: get: tags: - UniFS As A Service (UaaS) summary: Get SRaaS Configuration for an UaaS Stack description: Get SRaaS configuration for a specific UaaS Stack, including the metrics. operationId: get_stack_sraas_uaas_stacks__stack_id__sraas_get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasStackSraasDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/analytics_connector: get: tags: - UniFS As A Service (UaaS) summary: Get Analytics Connector Information operationId: get_analytics_connector_info_uaas_analytics_connector_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AnalyticsConnectorDto' security: - HTTPBearer: [] post: tags: - UniFS As A Service (UaaS) summary: Generate Analytics Connector Key operationId: generate_analytics_connector_key_uaas_analytics_connector_post responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AnalyticsConnectorKeyDto' security: - HTTPBearer: [] patch: tags: - UniFS As A Service (UaaS) summary: Update Analytics Connector operationId: update_analytics_connector_uaas_analytics_connector_patch requestBody: content: application/json: schema: $ref: '#/components/schemas/AnalyticsConnectorAwsIdsDto' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AnalyticsConnectorDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /uaas/stacks/{stack_id}/nds/blob-keys: get: tags: - UniFS As A Service (UaaS) summary: Get Blob Access Keys for UaaS Stack description: Get the list of blob access keys in the NDS configuration of a given UaaS stack. operationId: get_blob_access_keys_uaas_stacks__stack_id__nds_blob_keys_get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasBlobAccessKeysDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/nds/blob-keys/{blob_key_id}: patch: tags: - UniFS As A Service (UaaS) summary: Regenerate Blob Access Key description: Generate a new blob key given the UaaS stack ID and the ID of blob key to replace. operationId: regenerate_blob_access_key_uaas_stacks__stack_id__nds_blob_keys__blob_key_id__patch security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: blob_key_id in: path required: true schema: type: string format: uuid title: Blob Key Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasBlobAccessKeyRevealedDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - UniFS As A Service (UaaS) summary: Get a specific Blob Access Key for UaaS Stack description: Get the details of a blob access key given the UaaS stack ID and the blob key ID. operationId: get_blob_access_key_uaas_stacks__stack_id__nds_blob_keys__blob_key_id__get security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id - name: blob_key_id in: path required: true schema: type: string format: uuid title: Blob Key Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasBlobAccessKeyRevealedDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /uaas/stacks/{stack_id}/nds/sas-token: post: tags: - UniFS As A Service (UaaS) summary: Generate SAS Token for Blob Storage Access description: 'Generate a SAS token for blob storage access. This endpoint allows users with SAS generation permissions to create time-limited access tokens for blob storage without exposing the underlying access keys.' operationId: generate_sas_token_uaas_stacks__stack_id__nds_sas_token_post security: - HTTPBearer: [] parameters: - name: stack_id in: path required: true schema: type: string format: uuid title: Stack Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UaasSasTokenRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UaasSasTokenResponseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /iam/users: get: tags: - IAM summary: Get Users operationId: get_users_iam_users_get responses: '200': description: Users retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UsersDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /iam/users/{user_id}: get: tags: - IAM summary: Get User operationId: get_user_iam_users__user_id__get security: - HTTPBearer: [] parameters: - name: user_id in: path required: true schema: type: string format: uuid title: User Id responses: '200': description: User retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UserDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /iam/users/{user_id}/roles: get: tags: - IAM summary: Get User Roles operationId: get_user_roles_iam_users__user_id__roles_get security: - HTTPBearer: [] parameters: - name: user_id in: path required: true schema: type: string format: uuid title: User Id responses: '200': description: User roles retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/RoleDto' title: Response 200 Get User Roles Iam Users User Id Roles Get '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /iam/roles: get: tags: - IAM summary: Get Roles operationId: get_roles_iam_roles_get responses: '200': description: Roles retrieved successfully content: application/json: schema: $ref: '#/components/schemas/RolesDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - IAM summary: Create Role operationId: create_role_iam_roles_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateRoleDto' required: true responses: '200': description: Role created successfully content: application/json: schema: $ref: '#/components/schemas/RoleDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /iam/roles/duplicate: post: tags: - IAM summary: Duplicate Role operationId: duplicate_role_iam_roles_duplicate_post requestBody: content: application/json: schema: $ref: '#/components/schemas/DuplicateRoleDto' required: true responses: '200': description: Role duplicated successfully content: application/json: schema: $ref: '#/components/schemas/RoleDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /iam/roles/{role_id}: patch: tags: - IAM summary: Update Role operationId: update_role_iam_roles__role_id__patch security: - HTTPBearer: [] parameters: - name: role_id in: path required: true schema: type: string format: uuid title: Role Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateRoleDto' responses: '200': description: Role updated successfully content: application/json: schema: $ref: '#/components/schemas/RoleDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - IAM summary: Delete Role operationId: delete_role_iam_roles__role_id__delete security: - HTTPBearer: [] parameters: - name: role_id in: path required: true schema: type: string format: uuid title: Role Id responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' get: tags: - IAM summary: Get Role operationId: get_role_iam_roles__role_id__get security: - HTTPBearer: [] parameters: - name: role_id in: path required: true schema: type: string format: uuid title: Role Id responses: '200': description: Role retrieved successfully content: application/json: schema: $ref: '#/components/schemas/RoleDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /iam/roles/{role_id}/permissions: get: tags: - IAM summary: Get Role Permissions operationId: get_permissions_for_role_iam_roles__role_id__permissions_get security: - HTTPBearer: [] parameters: - name: role_id in: path required: true schema: type: string format: uuid title: Role Id responses: '200': description: Role permissions retrieved successfully content: application/json: schema: $ref: '#/components/schemas/PermissionsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /iam/permissions: get: tags: - IAM summary: Get Permissions operationId: get_permissions_iam_permissions_get responses: '200': description: Permissions retrieved successfully content: application/json: schema: $ref: '#/components/schemas/PermissionsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /iam/me: get: tags: - IAM summary: Get My Roles and Permissions operationId: get_my_roles_and_permissions_iam_me_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RolesAndPermissionsDto' security: - HTTPBearer: [] /iam/service_keys: get: tags: - IAM summary: Get Service Keys operationId: get_service_keys_iam_service_keys_get responses: '200': description: Service keys retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ServiceKeysDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - IAM summary: Create Service Key operationId: create_service_key_iam_service_keys_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateServiceKeyRequestBodyDto' required: true responses: '200': description: Service key created successfully content: application/json: schema: $ref: '#/components/schemas/CreateServiceKeyResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /iam/service_keys/{service_key_id}: get: tags: - IAM summary: Get Service Key operationId: get_service_key_iam_service_keys__service_key_id__get security: - HTTPBearer: [] parameters: - name: service_key_id in: path required: true schema: type: string format: uuid title: Service Key Id responses: '200': description: Service key retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ServiceKeyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - IAM summary: Update Service Key operationId: update_service_key_iam_service_keys__service_key_id__patch security: - HTTPBearer: [] parameters: - name: service_key_id in: path required: true schema: type: string format: uuid title: Service Key Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateServiceKeyRequestBodyDto' responses: '200': description: Service key updated successfully content: application/json: schema: $ref: '#/components/schemas/ServiceKeyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - IAM summary: Delete Service Key operationId: delete_service_key_iam_service_keys__service_key_id__delete security: - HTTPBearer: [] parameters: - name: service_key_id in: path required: true schema: type: string format: uuid title: Service Key Id responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /iam/user_keys: get: tags: - IAM summary: Get User Keys operationId: get_user_keys_iam_user_keys_get responses: '200': description: User keys retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UserKeysDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] post: tags: - IAM summary: Create User Key operationId: create_user_key_iam_user_keys_post responses: '200': description: User key created successfully content: application/json: schema: $ref: '#/components/schemas/UserKeyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - HTTPBearer: [] /iam/user_keys/{user_key_id}: get: tags: - IAM summary: Get User Key operationId: get_user_key_iam_user_keys__user_key_id__get security: - HTTPBearer: [] parameters: - name: user_key_id in: path required: true schema: type: string format: uuid title: User Key Id responses: '200': description: User key retrieved successfully content: application/json: schema: $ref: '#/components/schemas/UserKeyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - IAM summary: Delete User Key operationId: delete_user_key_iam_user_keys__user_key_id__delete security: - HTTPBearer: [] parameters: - name: user_key_id in: path required: true schema: type: string format: uuid title: User Key Id responses: '200': description: Operation completed successfully content: application/json: schema: {} '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /notifications: get: tags: - Notifications summary: Get All Notifications description: "Get paginated notifications with optional filters.\n\nReturns\ \ notifications from the last 15 minutes by default if no date range is specified.\n\ Supports cursor-based pagination.\n\nArgs:\n filter_query: Filter parameters\ \ including dates, severity, category, appliance_name, volume_name and search\n\ \nReturns:\n NotificationsDto: Paginated list of notifications" operationId: get_notifications_notifications_get security: - HTTPBearer: [] parameters: - name: start_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' description: Start date filter. If not provided, defaults to 15 minutes ago. examples: - '2026-02-09T00:00:00Z' - '2026-02-01T00:00:00Z' title: Start Date description: Start date filter. If not provided, defaults to 15 minutes ago. - name: end_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' description: End date filter. If not provided, defaults to the current date and time. examples: - '2026-02-16T23:59:59Z' - '2026-02-28T23:59:59Z' title: End Date description: End date filter. If not provided, defaults to the current date and time. - name: severity in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/NotificationSeverity' - type: 'null' description: Defaults to all severities if not provided examples: - WARNING - ALERT - INFO title: Severity description: Defaults to all severities if not provided - name: category in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/NotificationCategory' - type: 'null' description: Defaults to all categories if not provided examples: - - Snapshots & Sync - - Restore & Recovery - Cyber Resilience title: Category description: Defaults to all categories if not provided - name: sub_category in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/NotificationSubCategory' - type: 'null' description: Defaults to all sub-categories if not provided examples: - - Snapshot - - Sync - Ransomware title: Sub Category description: Defaults to all sub-categories if not provided - name: appliance_name in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Defaults to all appliances if not provided examples: - - edge-001 - - edge-001 - edge-prod-01 title: Appliance Name description: Defaults to all appliances if not provided - name: volume_name in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Defaults to all volumes if not provided examples: - - volume-a - - volume-a - production-vol title: Volume Name description: Defaults to all volumes if not provided - name: search in: query required: false schema: anyOf: - type: string - type: 'null' description: Search term for notifications examples: - backup failed - connection timeout - storage title: Search description: Search term for notifications - name: limit in: query required: false schema: type: integer default: 50 title: Limit - name: iterator_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id - name: page in: query required: false schema: anyOf: - type: integer - type: 'null' title: Page - name: sort_by in: query required: false schema: $ref: '#/components/schemas/NotificationColumns' default: generated_at - name: sort_direction in: query required: false schema: $ref: '#/components/schemas/NotificationSortDirection' default: desc - name: include_count in: query required: false schema: type: boolean default: true title: Include Count responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/NotificationsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '500': description: Database connection failed or internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '400': description: Invalid request parameters (e.g., invalid cursor, limit <= 0, date range > 30 days, cursor parameters mismatch) content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '408': description: Database operation timed out content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /serials: get: tags: - Serials summary: Get Serials operationId: get_serials_serials_get security: - HTTPBearer: [] parameters: - name: type in: query required: false schema: anyOf: - enum: - edge - nmc - file_iq - naa - uaas type: string - type: 'null' title: Type - name: description in: query required: false schema: anyOf: - type: string - type: 'null' title: Description - name: in_use in: query required: false schema: anyOf: - type: boolean - type: 'null' title: In Use responses: '200': description: Serials retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SerialsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /serials/{serial_id}: get: tags: - Serials summary: Get Serial operationId: get_serial_serials__serial_id__get security: - HTTPBearer: [] parameters: - name: serial_id in: path required: true schema: type: string format: uuid title: Serial Id responses: '200': description: Serial retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SerialDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Serials summary: Decommission Serial operationId: update_serial_serials__serial_id__patch security: - HTTPBearer: [] parameters: - name: serial_id in: path required: true schema: type: string format: uuid title: Serial Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SerialPatchRequestDto' responses: '200': description: Appliance decommissioned successfully. content: application/json: schema: $ref: '#/components/schemas/SerialDto' '409': description: Appliance owns volumes or is in a state that does not allow for decommission content: application/json: schema: $ref: '#/components/schemas/SerialPatchErrorResponseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /serials/{serial_id}/auth_code: patch: tags: - Serials summary: Generate Serial Auth Code operationId: update_serials_serial_auth_serials__serial_id__auth_code_patch security: - HTTPBearer: [] parameters: - name: serial_id in: path required: true schema: type: string format: uuid title: Serial Id responses: '200': description: Auth code generated successfully content: application/json: schema: $ref: '#/components/schemas/AuthCodeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' get: tags: - Serials summary: Get Serial Auth Code operationId: get_serials_serial_auth_serials__serial_id__auth_code_get security: - HTTPBearer: [] parameters: - name: serial_id in: path required: true schema: type: string format: uuid title: Serial Id responses: '200': description: Auth code retrieved successfully content: application/json: schema: $ref: '#/components/schemas/AuthCodeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /software/downloads: get: tags: - Software summary: Get Software Downloads operationId: get_downloads_software_downloads_get security: - HTTPBearer: [] parameters: - name: type in: query required: false schema: anyOf: - $ref: '#/components/schemas/ApplianceType' - type: 'null' title: Type - name: platform in: query required: false schema: anyOf: - type: string - type: 'null' title: Platform - name: version in: query required: false schema: anyOf: - type: string - type: 'null' title: Version responses: '200': description: Software downloads retrieved successfully content: application/json: schema: $ref: '#/components/schemas/DownloadsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /software/downloads/{id}: get: tags: - Software summary: Get Download URL description: Get the download URL for a specific software download operationId: get_download_url_software_downloads__id__get security: - HTTPBearer: [] parameters: - name: id in: path required: true schema: type: string format: uuid title: Id responses: '200': description: Download URL retrieved successfully content: application/json: schema: $ref: '#/components/schemas/DownloadUrlResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /software/downloads/{id}/checksum: get: tags: - Software summary: Get Download SHA-256 Checksum description: Get the published SHA-256 checksum for a specific software download operationId: get_download_checksum_software_downloads__id__checksum_get security: - HTTPBearer: [] parameters: - name: id in: path required: true schema: type: string format: uuid title: Id responses: '200': description: Download checksum retrieved successfully content: application/json: schema: $ref: '#/components/schemas/DownloadChecksumResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /tasks: get: tags: - Tasks summary: Get Tasks description: Get tasks for the account, optionally filtered to the latest per resource. operationId: get_tasks_tasks_get security: - HTTPBearer: [] parameters: - name: resource in: query required: false schema: anyOf: - $ref: '#/components/schemas/TaskResource' - type: 'null' title: Resource - name: action in: query required: false schema: anyOf: - type: string - type: 'null' title: Action - name: stack_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Stack Id - name: latest_per_resource in: query required: false schema: type: boolean default: false title: Latest Per Resource responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TasksSummaryDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /tasks/{task_id}: get: tags: - Tasks summary: Get Task description: Get one task by ID. operationId: get_task_tasks__task_id__get security: - HTTPBearer: [] parameters: - name: task_id in: path required: true schema: type: string format: uuid title: Task Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /tasks/{task_id}/acknowledge: post: tags: - Tasks summary: Acknowledge Failed Task operationId: acknowledge_failed_task_tasks__task_id__acknowledge_post security: - HTTPBearer: [] parameters: - name: task_id in: path required: true schema: type: string format: uuid title: Task Id responses: '204': description: Successful Response '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /telemetry/appliances/{serial_number}/performance_summary: get: tags: - Ops IQ summary: Get Appliance Performance Summary description: Get the read-only performance summary used by the appliance detail header. operationId: get_performance_summary_telemetry_appliances__serial_number__performance_summary_get security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PerformanceSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/load_average: post: tags: - Ops IQ summary: Get Appliance Load Average description: Get load average telemetry for an appliance. operationId: get_appliance_load_avg_telemetry_appliances__serial_number__load_average_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Load average telemetry retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCpuLoadAvgGraphDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cache_disk_io_time: post: tags: - Ops IQ summary: Get Appliance Cache Disk I/O Time description: Get cache disk I/O time telemetry for an appliance. operationId: get_appliance_cache_disk_io_time_telemetry_appliances__serial_number__cache_disk_io_time_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCacheDiskLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cache_disk_io_latency: post: tags: - Ops IQ summary: Get Appliance Cache Disk IO Latency description: Get cache disk IO latency telemetry for an appliance. operationId: get_appliance_cache_disk_io_latency_telemetry_appliances__serial_number__cache_disk_io_latency_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCacheDiskIoLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cache_disk_iops: post: tags: - Ops IQ summary: Get Appliance Cache Disk IOPS description: Get cache disk IOPS telemetry for an appliance. operationId: get_appliance_cache_disk_iops_telemetry_appliances__serial_number__cache_disk_iops_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCacheDiskIoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cache_hits_misses: post: tags: - Ops IQ summary: Get Appliance Cache Hits/Misses description: Get cache hits and misses telemetry for an appliance. operationId: get_appliance_cache_hits_misses_telemetry_appliances__serial_number__cache_hits_misses_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCacheHitsMissesDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cache_utilization: post: tags: - Ops IQ summary: Get Appliance Cache Utilization description: Get cache utilization telemetry for an appliance. operationId: get_appliance_cache_utilization_telemetry_appliances__serial_number__cache_utilization_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCacheUtilizationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cow_disk_iops: post: tags: - Ops IQ summary: Get Appliance CoW Disk IOPS description: Get CoW disk IOPS telemetry for an appliance. operationId: get_appliance_cow_disk_iops_telemetry_appliances__serial_number__cow_disk_iops_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCowDiskIoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cow_disk_io_time: post: tags: - Ops IQ summary: Get Appliance CoW Disk I/O Time description: Get CoW disk I/O time telemetry for an appliance. operationId: get_appliance_cow_disk_io_time_telemetry_appliances__serial_number__cow_disk_io_time_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCowDiskLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cow_disk_io_latency: post: tags: - Ops IQ summary: Get Appliance CoW Disk IO Latency description: Get CoW disk IO latency telemetry for an appliance. operationId: get_appliance_cow_disk_io_latency_telemetry_appliances__serial_number__cow_disk_io_latency_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCowDiskIoLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/file_iq_disk_iops: post: tags: - Ops IQ summary: Get Appliance File IQ DB Disk IOPS description: Get File IQ disk IOPS telemetry for an appliance. operationId: get_appliance_file_iq_disk_iops_telemetry_appliances__serial_number__file_iq_disk_iops_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryFileIqDiskIoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/file_iq_disk_io_time: post: tags: - Ops IQ summary: Get Appliance File IQ DB Disk I/O Time description: Get File IQ disk I/O time telemetry for an appliance. operationId: get_appliance_file_iq_disk_io_time_telemetry_appliances__serial_number__file_iq_disk_io_time_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryFileIqDiskLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/file_iq_disk_io_latency: post: tags: - Ops IQ summary: Get Appliance File IQ DB Disk IO Latency description: Get File IQ disk IO latency telemetry for an appliance. operationId: get_appliance_file_iq_disk_io_latency_telemetry_appliances__serial_number__file_iq_disk_io_latency_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryFileIqDiskIoLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/cpu_utilization: post: tags: - Ops IQ summary: Get Appliance CPU Utilization description: Get CPU usage telemetry for an appliance. operationId: get_appliance_cpu_usage_telemetry_appliances__serial_number__cpu_utilization_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCpuUsageDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/memory_utilization: post: tags: - Ops IQ summary: Get Appliance Memory Utilization description: Get memory utilization telemetry for an appliance. operationId: get_appliance_memory_utilization_telemetry_appliances__serial_number__memory_utilization_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryMemoryUtilizationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/memory_utilization_details: post: tags: - Ops IQ summary: Get Appliance Memory Utilization Details description: Get detailed memory utilization telemetry for an appliance. operationId: get_appliance_memory_utilization_details_telemetry_appliances__serial_number__memory_utilization_details_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryMemoryUtilizationDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/network_utilization: post: tags: - Ops IQ summary: Get Appliance Network Utilization description: Get network utilization telemetry for an appliance. operationId: get_appliance_network_utilization_telemetry_appliances__serial_number__network_utilization_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryNetworkThroughputDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/os_disk_io_time: post: tags: - Ops IQ summary: Get Appliance OS Disk I/O Time description: Get OS disk I/O time telemetry for an appliance. operationId: get_appliance_os_disk_io_time_telemetry_appliances__serial_number__os_disk_io_time_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryOsDiskLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/os_disk_io_latency: post: tags: - Ops IQ summary: Get Appliance OS Disk IO Latency description: Get OS disk IO latency telemetry for an appliance. operationId: get_appliance_os_disk_io_latency_telemetry_appliances__serial_number__os_disk_io_latency_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryOsDiskIoLatencyDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/os_disk_iops: post: tags: - Ops IQ summary: Get Appliance OS Disk IOPS description: Get OS disk IOPS telemetry for an appliance. operationId: get_appliance_os_disk_iops_telemetry_appliances__serial_number__os_disk_iops_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryOsDiskIoDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/smb_connections: post: tags: - Ops IQ summary: Get Appliance SMB Connections description: Get SMB connections telemetry for an appliance. operationId: get_appliance_smb_connections_telemetry_appliances__serial_number__smb_connections_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetrySMBConnectionsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/current_appliance_performance: post: tags: - Ops IQ summary: Get Current Appliance Performance description: Get current appliance performance telemetry for an appliance. Health is based on the last 30 minutes of data. operationId: get_current_appliance_performance_telemetry_appliances__serial_number__current_appliance_performance_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryDurationRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceTelemetryCorePerformanceDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/appliances/{serial_number}/appliance_health_score: post: tags: - Ops IQ summary: Get Appliance Health Score description: Get health score telemetry for an appliance. operationId: get_appliance_health_score_telemetry_appliances__serial_number__appliance_health_score_post security: - HTTPBearer: [] parameters: - name: serial_number in: path required: true schema: type: string format: uuid title: Serial Number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplianceHealthScoreRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApplianceHealthScoreDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/volumes/{volume_id}/average_time_to_protect: post: tags: - Ops IQ summary: Get Volume Average Time To Protect description: Get protection mean telemetry for a volume. operationId: get_volume_average_time_to_protect_telemetry_volumes__volume_id__average_time_to_protect_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryProtectMeanDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/volumes/{volume_id}/snapshot_timeline: post: tags: - Ops IQ summary: Get Volume Snapshot Timeline description: Get push timeline telemetry for a volume. operationId: get_volume_snapshot_timeline_telemetry_volumes__volume_id__snapshot_timeline_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryPushTimelineDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/volumes/{volume_id}/snapshot_content: post: tags: - Ops IQ summary: Get Volume Snapshot Content description: Get object counts telemetry for a volume. operationId: get_volume_snapshot_content_telemetry_volumes__volume_id__snapshot_content_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryObjectCountsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/volumes/{volume_id}/snapshot_details: post: tags: - Ops IQ summary: Get Volume Snapshot Details description: Get snapshot details telemetry for a volume. operationId: get_volume_snapshot_details_telemetry_volumes__volume_id__snapshot_details_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetrySnapshotDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /telemetry/volumes/{volume_id}/snapshot_propagation_by_appliance: post: tags: - Ops IQ summary: Get Volume Snapshot Propagation by Appliance description: Get snapshot propagation telemetry by appliance for a volume. operationId: get_volume_snapshot_propagation_by_appliance_telemetry_volumes__volume_id__snapshot_propagation_by_appliance_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetryRequestDto' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/VolumeTelemetrySnapshotPropagationDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions or license content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too many requests (rate limit exceeded) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '413': description: Payload too large content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '408': description: Request timeout content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /volumes: get: tags: - Volumes summary: Get Volumes description: 'Get all volumes for the account. Returns the live NOC list, sorted by description.' operationId: get_volumes_volumes_get responses: '200': description: Volumes retrieved successfully content: application/json: schema: $ref: '#/components/schemas/VolumesResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' security: - HTTPBearer: [] /volumes/{volume_id}/edges/{edge_id}/snapshots: get: tags: - Volumes summary: Get Snapshot Status description: 'Snapshot status for one ``(volume, edge)`` pair. Reads directly from the DB. Returns HTTP 404 when no ``VolumeConnection`` exists for the pair (the mount is unknown to Portal — the repo raises :class:`ResourceNotFound` and the global exception handler maps it). Returns ``current_snapshot_status=idle`` when the mount is known but the filer has not yet reported any snapshot metrics for it.' operationId: get_snapshot_status_volumes__volume_id__edges__edge_id__snapshots_get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '200': description: Current snapshot status for the given (volume_id, edge_id) pair content: application/json: schema: $ref: '#/components/schemas/SnapshotStatusResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' post: tags: - Volumes summary: Start Snapshot description: Start a snapshot for the given volume on the specified edge. operationId: start_snapshot_volumes__volume_id__edges__edge_id__snapshots_post security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '202': description: Snapshot dispatch accepted content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' delete: tags: - Volumes summary: Cancel Snapshot description: Cancel an in-progress snapshot. operationId: cancel_snapshot_volumes__volume_id__edges__edge_id__snapshots_delete security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id - name: edge_id in: path required: true schema: type: string format: uuid title: Edge Id responses: '202': description: Snapshot cancel dispatch accepted content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /volumes/{volume_id}: get: tags: - Volumes summary: Get Volume description: Get a single volume with detailed information. operationId: get_volume_volumes__volume_id__get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: Volume retrieved successfully content: application/json: schema: $ref: '#/components/schemas/VolumeDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /volumes/{volume_id}/name: patch: tags: - Volumes summary: Rename Volume description: 'Rename a volume. Dispatches ``VolumeRenameCommand`` to the volume''s master appliance and returns the tracking task (``id`` is the ``task_id`` the FE subscribes to). ``404`` when the volume is unknown, ``400`` for an invalid or unchanged name, ``409`` when a rename is already in flight for the volume.' operationId: rename_volume_volumes__volume_id__name_patch security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VolumeRenameRequestDto' responses: '202': description: Volume rename dispatch accepted content: application/json: schema: $ref: '#/components/schemas/TaskSummaryDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /volumes/{volume_id}/details: get: tags: - Volumes summary: Get Volume Details description: "Get enriched volume details with per-edge state\n\nArgs:\n \ \ volume_id: The ID of the volume to retrieve details for\n\nReturns:\n \ \ VolumeDetailsDto: The volume with per-edge state and configuration" operationId: get_volume_details_volumes__volume_id__details_get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: Volume details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/VolumeDetailsDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /volumes/{volume_id}/capacity-history: get: tags: - Volumes summary: Get Volume Capacity History description: "Get capacity history for a volume.\n\nGated by ``can_view_volume_data``.\n\ \nReturns 200 with an empty data_points list when no capacity data exists\ \ yet.\nReturns 404 when the volume_id does not exist.\n\nThe existence check\ \ is a cheap PK lookup on ``volumes_v2`` — it avoids a\nfull ``volume_capacity_history``\ \ scan (potentially millions of rows across\nthe tenant) for a not-found volume,\ \ and it distinguishes \"unknown volume\"\n(404) from \"known volume with\ \ no history yet\" (200 with empty points).\n\nArgs:\n volume_id: The ID\ \ of the volume to retrieve capacity history for\n\nReturns:\n VolumeCapacityHistoryResponseDto:\ \ Capacity history data points" operationId: get_volume_capacity_history_volumes__volume_id__capacity_history_get security: - HTTPBearer: [] parameters: - name: volume_id in: path required: true schema: type: string title: Volume Id responses: '200': description: Volume capacity history retrieved successfully content: application/json: schema: $ref: '#/components/schemas/VolumeCapacityHistoryResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /volume_connections: get: tags: - Volume Connections summary: Get Volume Connections description: 'Flat volume-appliance connection list from Portal DB. One ``(volume, appliance)`` row per mount. Supports ``search``, multi-value filters, and ``sort_by`` + ``sort_order``. Unpaginated — caller does client-side search/sort/paging.' operationId: get_volume_connections_volume_connections_get security: - HTTPBearer: [] parameters: - name: cloud_providers in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/NocCloudProvider' - type: 'null' title: Cloud Providers - name: protocols in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/Protocol' - type: 'null' title: Protocols - name: roles in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/portal__api__dto__volumes__Role' - type: 'null' title: Roles - name: security_modes in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/SecurityMode' - type: 'null' title: Security Modes - name: permission_policies in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/PermissionPolicy' - type: 'null' title: Permission Policies - name: connection_permissions in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/ConnectionPermission' - type: 'null' title: Connection Permissions - name: cloud_regions in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Cloud Regions - name: appliance_names in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Appliance Names - name: volume_names in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Volume Names - name: sort_by in: query required: false schema: anyOf: - $ref: '#/components/schemas/VolumeSortBy' - type: 'null' title: Sort By - name: sort_order in: query required: false schema: $ref: '#/components/schemas/SortOrder' default: asc - name: search in: query required: false schema: anyOf: - type: string - type: 'null' title: Search - name: volume_id in: query required: false schema: anyOf: - type: string - type: 'null' title: Volume Id responses: '200': description: Flat volume-appliance connection list from Portal DB with search, filters, and sort. content: application/json: schema: $ref: '#/components/schemas/VolumeConnectionsResponseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' /: options: summary: ' ' operationId: ___options responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OptionsResponseDto' components: schemas: AWSS3CredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: amazons3 title: Cred Type default: amazons3 region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - secret - appliance_id title: AWSS3CredentialRequest AWSS3CredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: amazons3 title: Cred Type default: amazons3 region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - appliance_ids title: AWSS3CredentialUpdateRequest AWSS3GovCloudCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: amazons3gov title: Cred Type default: amazons3gov region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - secret - appliance_id title: AWSS3GovCloudCredentialRequest AWSS3GovCloudCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: amazons3gov title: Cred Type default: amazons3gov region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - appliance_ids title: AWSS3GovCloudCredentialUpdateRequest AccountInformationDto: properties: email: type: string format: email title: Email first_name: type: string title: First Name last_name: type: string title: Last Name company: type: string title: Company phone: type: string title: Phone created: type: string format: date-time title: Created id: type: string format: uuid title: Id type: object required: - email - first_name - last_name - company - phone - created - id title: AccountInformationDto description: Response model for account infromation for webbff/account AccountInformationUpdate: properties: action: type: string const: Account Information Updated title: Action old: $ref: '#/components/schemas/AccountInformationDto' new: $ref: '#/components/schemas/AccountInformationDto' type: object required: - action - old - new title: AccountInformationUpdate AccountLicenseDto: properties: subscription_status: type: string title: Subscription Status subscription_expiration: anyOf: - type: string format: date-time - type: 'null' title: Subscription Expiration analytics_connector_enabled: type: boolean title: Analytics Connector Enabled uaas_enabled: type: boolean title: Uaas Enabled nds_enabled: type: boolean title: Nds Enabled prune_enabled: type: boolean title: Prune Enabled gfa_enabled: type: boolean title: Gfa Enabled file_iq_enabled: type: boolean title: File Iq Enabled file_iq_premium: type: boolean title: File Iq Premium default: false s3_enabled: type: boolean title: S3 Enabled naa_enabled: type: boolean title: Naa Enabled awada_enabled: type: boolean title: Awada Enabled ops_iq_premium: type: boolean title: Ops Iq Premium ransomware_protection_enabled: type: boolean title: Ransomware Protection Enabled default: false multi_site_collaboration_enabled: type: boolean title: Multi Site Collaboration Enabled default: false ai_activate: type: boolean title: Ai Activate default: false anonymize_third_party_analytics: type: boolean title: Anonymize Third Party Analytics default: false max_now_storage: type: integer title: Max Now Storage default: 0 max_cloud_storage: type: integer title: Max Cloud Storage default: 0 enterprise_search: type: boolean title: Enterprise Search default: false byoc_clouds: items: $ref: '#/components/schemas/CloudProviderEntryDto' type: array title: Byoc Clouds key_escrow_enabled: type: boolean title: Key Escrow Enabled default: false key_generation_enabled: type: boolean title: Key Generation Enabled default: false type: object required: - subscription_status - analytics_connector_enabled - uaas_enabled - nds_enabled - prune_enabled - gfa_enabled - file_iq_enabled - s3_enabled - naa_enabled - awada_enabled - ops_iq_premium title: AccountLicenseDto ActivityLogAction: type: string enum: - Auth Code Requested - Auth Code Reset - Account Information Updated - Serial Number Decommission - Email Updated - SSO Config Updated - Web Access SSO Config Updated - S3 Edge Config Updated - S3 Edge Enabled - S3 Edge Disabled - Analytics Connector Updated - Analytics Connector Key Generated - User Created - Role Created - Role Deleted - Role Updated - Edge FIQ Service Config Updated - File IQ Config Updated - Service Key Created - Service Key Deleted - Service Key Role Added - Service Key Role Removed - GFA API Key Deleted - GFA API Key Created - Cloud Credential Deleted - User Key Created - User Key Deleted - Authorized Login - Authorized Logout - Access Refresh - Session Expired - Software Download Configuration Updated - Stack Configuration Updated - Stack NDS Configuration Updated - Stack Volume Added - Stack Volume Updated - Stack Volume Removal Requested - Stack Volume Removed - Stack NDS SAS Token Generated - Snapshot Started - Snapshot Cancelled - Volume Rename Requested - AI Activate Inventory Created - AI Activate Index Created - AI Activate Index Config Updated - AI Activate Remote Support Updated - AI Activate MCP Config Updated - AI Activate Support - AI Activate MCP Authentication - AI Activate MCP Refresh - AI Activate Volume Removal Requested - AI Activate Volume Removal Cancelled - Cloud Credential Created - Cloud Credential Updated - Cloud Credential Create Failed - Cloud Credential Update Failed - Cloud Credential Delete Failed - Cloud Credential Error Acknowledged - Portal Remote Access Enabled - Portal Remote Access Disabled - Appliance Remote Support Enabled - Appliance Remote Support Disabled - Appliance Diagnostics Sent - Appliance Description Updated - Enterprise Search Inventory Created - Enterprise Search Inventory Updated - Enterprise Search Repository Created - Enterprise Search Repository Updated - Enterprise Search Repository Removal Requested - Enterprise Search Repository Removal Cancelled - Legacy title: ActivityLogAction ActivityLogDto: properties: id: type: string format: uuid title: Id transaction_id: anyOf: - type: string format: uuid - type: 'null' title: Transaction Id source: anyOf: - type: string - type: 'null' title: Source target: anyOf: - $ref: '#/components/schemas/ActivityLogTargetDto' - type: 'null' action: anyOf: - $ref: '#/components/schemas/ActivityLogAction' - type: 'null' summary: anyOf: - type: string - type: 'null' title: Summary timestamp: type: string format: date-time title: Timestamp user: anyOf: - $ref: '#/components/schemas/ActivityLogsUserDto' - type: 'null' key: anyOf: - $ref: '#/components/schemas/ActivityLogsKeyDto' - type: 'null' roles: items: type: string type: array title: Roles source_ip: anyOf: - type: string format: ipv4 - type: string format: ipv6 - type: 'null' title: Source Ip details: anyOf: - oneOf: - $ref: '#/components/schemas/SoftwareDownloadConfigurationUpdate' - $ref: '#/components/schemas/AuthCode' - $ref: '#/components/schemas/AccountInformationUpdate' - $ref: '#/components/schemas/EdgeTarget' - $ref: '#/components/schemas/EdgeFiqServiceConfigUpdate' - $ref: '#/components/schemas/EmailUpdate' - $ref: '#/components/schemas/SSOConfigUpdate' - $ref: '#/components/schemas/WebAccessSSOConfigUpdate' - $ref: '#/components/schemas/S3EdgeConfigUpdate' - $ref: '#/components/schemas/AnalyticsConnectorUpdate' - $ref: '#/components/schemas/UserCreated' - $ref: '#/components/schemas/portal__api__dto__activity_logs__EventDetails__Role' - $ref: '#/components/schemas/RoleUpdated' - $ref: '#/components/schemas/FiqConfigUpdate' - $ref: '#/components/schemas/CreatedOrDeleted' - $ref: '#/components/schemas/ServiceKeyRole' - $ref: '#/components/schemas/StackConfigUpdate' - $ref: '#/components/schemas/StackNDSConfigUpdate' - $ref: '#/components/schemas/StackVolumeAdded' - $ref: '#/components/schemas/StackVolumeUpdated' - $ref: '#/components/schemas/StackVolumeRemoved' - $ref: '#/components/schemas/StackVolumeRemovalRequested' - $ref: '#/components/schemas/Authentication' - $ref: '#/components/schemas/SnapshotEvent' - $ref: '#/components/schemas/VolumeRenameEvent' - $ref: '#/components/schemas/AiActivateInventoryCreated' - $ref: '#/components/schemas/AiActivateIndexCreated' - $ref: '#/components/schemas/AiActivateIndexConfigUpdated' - $ref: '#/components/schemas/AiActivateRemoteSupportUpdate' - $ref: '#/components/schemas/AiActivateMcpConfigUpdated' - $ref: '#/components/schemas/AiActivateSupport' - $ref: '#/components/schemas/AiActivateMcpAuthentication' - $ref: '#/components/schemas/AiActivateVolumeRemoval' - $ref: '#/components/schemas/CloudCredentialCreated' - $ref: '#/components/schemas/CloudCredentialUpdated' - $ref: '#/components/schemas/CloudCredentialDeleted' - $ref: '#/components/schemas/CloudCredentialCreateFailed' - $ref: '#/components/schemas/CloudCredentialUpdateFailed' - $ref: '#/components/schemas/CloudCredentialDeleteFailed' - $ref: '#/components/schemas/CloudCredentialErrorAcknowledged' - $ref: '#/components/schemas/PortalRemoteAccessEnabled' - $ref: '#/components/schemas/PortalRemoteAccessDisabled' - $ref: '#/components/schemas/ApplianceRemoteSupportEnabled' - $ref: '#/components/schemas/ApplianceRemoteSupportDisabled' - $ref: '#/components/schemas/ApplianceDiagnosticsSent' - $ref: '#/components/schemas/EdgeDescriptionUpdated' - $ref: '#/components/schemas/EnterpriseSearchInventoryCreated' - $ref: '#/components/schemas/EnterpriseSearchInventoryUpdated' - $ref: '#/components/schemas/EnterpriseSearchRepositoryCreated' - $ref: '#/components/schemas/EnterpriseSearchRepositoryUpdated' - $ref: '#/components/schemas/EnterpriseSearchRepositoryRemovalRequested' - $ref: '#/components/schemas/EnterpriseSearchRepositoryRemovalCancelled' discriminator: propertyName: action mapping: AI Activate Index Config Updated: '#/components/schemas/AiActivateIndexConfigUpdated' AI Activate Index Created: '#/components/schemas/AiActivateIndexCreated' AI Activate Inventory Created: '#/components/schemas/AiActivateInventoryCreated' AI Activate MCP Authentication: '#/components/schemas/AiActivateMcpAuthentication' AI Activate MCP Config Updated: '#/components/schemas/AiActivateMcpConfigUpdated' AI Activate MCP Refresh: '#/components/schemas/AiActivateMcpAuthentication' AI Activate Remote Support Updated: '#/components/schemas/AiActivateRemoteSupportUpdate' AI Activate Support: '#/components/schemas/AiActivateSupport' AI Activate Volume Removal Cancelled: '#/components/schemas/AiActivateVolumeRemoval' AI Activate Volume Removal Requested: '#/components/schemas/AiActivateVolumeRemoval' Access Refresh: '#/components/schemas/Authentication' Account Information Updated: '#/components/schemas/AccountInformationUpdate' Analytics Connector Updated: '#/components/schemas/AnalyticsConnectorUpdate' Appliance Description Updated: '#/components/schemas/EdgeDescriptionUpdated' Appliance Diagnostics Sent: '#/components/schemas/ApplianceDiagnosticsSent' Appliance Remote Support Disabled: '#/components/schemas/ApplianceRemoteSupportDisabled' Appliance Remote Support Enabled: '#/components/schemas/ApplianceRemoteSupportEnabled' Auth Code Requested: '#/components/schemas/AuthCode' Auth Code Reset: '#/components/schemas/AuthCode' Authorized Login: '#/components/schemas/Authentication' Authorized Logout: '#/components/schemas/Authentication' Cloud Credential Create Failed: '#/components/schemas/CloudCredentialCreateFailed' Cloud Credential Created: '#/components/schemas/CloudCredentialCreated' Cloud Credential Delete Failed: '#/components/schemas/CloudCredentialDeleteFailed' Cloud Credential Deleted: '#/components/schemas/CloudCredentialDeleted' Cloud Credential Error Acknowledged: '#/components/schemas/CloudCredentialErrorAcknowledged' Cloud Credential Update Failed: '#/components/schemas/CloudCredentialUpdateFailed' Cloud Credential Updated: '#/components/schemas/CloudCredentialUpdated' Edge FIQ Service Config Updated: '#/components/schemas/EdgeFiqServiceConfigUpdate' Email Updated: '#/components/schemas/EmailUpdate' Enterprise Search Inventory Created: '#/components/schemas/EnterpriseSearchInventoryCreated' Enterprise Search Inventory Updated: '#/components/schemas/EnterpriseSearchInventoryUpdated' Enterprise Search Repository Created: '#/components/schemas/EnterpriseSearchRepositoryCreated' Enterprise Search Repository Removal Cancelled: '#/components/schemas/EnterpriseSearchRepositoryRemovalCancelled' Enterprise Search Repository Removal Requested: '#/components/schemas/EnterpriseSearchRepositoryRemovalRequested' Enterprise Search Repository Updated: '#/components/schemas/EnterpriseSearchRepositoryUpdated' File IQ Config Updated: '#/components/schemas/FiqConfigUpdate' GFA API Key Created: '#/components/schemas/CreatedOrDeleted' GFA API Key Deleted: '#/components/schemas/CreatedOrDeleted' Portal Remote Access Disabled: '#/components/schemas/PortalRemoteAccessDisabled' Portal Remote Access Enabled: '#/components/schemas/PortalRemoteAccessEnabled' Role Created: '#/components/schemas/portal__api__dto__activity_logs__EventDetails__Role' Role Deleted: '#/components/schemas/portal__api__dto__activity_logs__EventDetails__Role' Role Updated: '#/components/schemas/RoleUpdated' S3 Edge Config Updated: '#/components/schemas/S3EdgeConfigUpdate' S3 Edge Disabled: '#/components/schemas/EdgeTarget' S3 Edge Enabled: '#/components/schemas/EdgeTarget' SSO Config Updated: '#/components/schemas/SSOConfigUpdate' Serial Number Decommission: '#/components/schemas/AuthCode' Service Key Created: '#/components/schemas/CreatedOrDeleted' Service Key Deleted: '#/components/schemas/CreatedOrDeleted' Service Key Role Added: '#/components/schemas/ServiceKeyRole' Service Key Role Removed: '#/components/schemas/ServiceKeyRole' Session Expired: '#/components/schemas/Authentication' Snapshot Cancelled: '#/components/schemas/SnapshotEvent' Snapshot Started: '#/components/schemas/SnapshotEvent' Software Download Configuration Updated: '#/components/schemas/SoftwareDownloadConfigurationUpdate' Stack Configuration Updated: '#/components/schemas/StackConfigUpdate' Stack NDS Configuration Updated: '#/components/schemas/StackNDSConfigUpdate' Stack Volume Added: '#/components/schemas/StackVolumeAdded' Stack Volume Removal Requested: '#/components/schemas/StackVolumeRemovalRequested' Stack Volume Removed: '#/components/schemas/StackVolumeRemoved' Stack Volume Updated: '#/components/schemas/StackVolumeUpdated' User Created: '#/components/schemas/UserCreated' User Key Created: '#/components/schemas/CreatedOrDeleted' User Key Deleted: '#/components/schemas/CreatedOrDeleted' Volume Rename Requested: '#/components/schemas/VolumeRenameEvent' Web Access SSO Config Updated: '#/components/schemas/WebAccessSSOConfigUpdate' - type: 'null' title: Details type: object required: - id - timestamp - details title: ActivityLogDto ActivityLogResultDto: properties: metadata: $ref: '#/components/schemas/PaginatedCollectionMetadataDto' items: items: $ref: '#/components/schemas/ActivityLogDto' type: array title: Items type: object required: - metadata title: ActivityLogResultDto ActivityLogSortBy: type: string enum: - timestamp - action - target - target_description - initiated_by title: ActivityLogSortBy ActivityLogTarget: type: string enum: - Portal - Portal MCP - AI Activate MCP - AI Activate Scoped Volumes - Edge - File IQ - Stack title: ActivityLogTarget ActivityLogTargetDto: properties: id: anyOf: - type: string format: uuid - type: 'null' title: Id type: $ref: '#/components/schemas/ActivityLogTarget' description: anyOf: - type: string - type: 'null' title: Description type: object required: - type title: ActivityLogTargetDto ActivityLogsKeyDto: properties: id: type: string format: uuid title: Id type: $ref: '#/components/schemas/KeyType' name: anyOf: - type: string - type: 'null' title: Name type: object required: - id - type title: ActivityLogsKeyDto ActivityLogsRoleDto: properties: id: type: string format: uuid title: Id created: type: string format: date-time title: Created last_updated: type: string format: date-time title: Last Updated name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names default: [] editable: type: boolean title: Editable default: true deletable: type: boolean title: Deletable default: true permissions: items: type: string type: array title: Permissions type: object required: - id - created - last_updated - name title: ActivityLogsRoleDto ActivityLogsUserDto: properties: id: type: string format: uuid title: Id name: anyOf: - type: string - type: 'null' title: Name type: object required: - id title: ActivityLogsUserDto AiActivateAccountInfoDto: properties: mcp: $ref: '#/components/schemas/AiActivateAccountSubscriptionDto' type: object required: - mcp title: AiActivateAccountInfoDto description: 'Account-level AI Activate subscription summary. MCP is currently the only AI Activate workload. A Search subscription will be reintroduced here once that workload lands.' AiActivateAccountSubscriptionDto: properties: subscribed_limit: type: integer minimum: 0.0 title: Subscribed Limit description: Total files allowed for the subscription total_file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Total File Count description: Total files found by the metadata crawl, including billable files. Null when usage has not been collected. billable_file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Billable File Count description: Content-indexed files counted against the subscription. Null when usage has not been collected. metadata_only_file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Metadata Only File Count description: Non-billable metadata-only files. Null when usage is incomplete or inconsistent. consumed: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Consumed description: Deprecated alias for billable_file_count remaining: anyOf: - type: integer - type: 'null' title: Remaining description: Billable capacity remaining; negative when over the limit. Null when billable usage has not been collected. type: object required: - subscribed_limit title: AiActivateAccountSubscriptionDto AiActivateCreateIndexRequestBodyDto: properties: volume_guid: type: string title: Volume Guid mcp_enabled: anyOf: - type: boolean - type: 'null' title: Mcp Enabled include_paths: anyOf: - items: type: string type: array - type: 'null' title: Include Paths exclude_paths: anyOf: - items: type: string type: array - type: 'null' title: Exclude Paths type: object required: - volume_guid title: AiActivateCreateIndexRequestBodyDto AiActivateCreateInventoryRequestBodyDto: properties: volume_guid: type: string title: Volume Guid region: anyOf: - type: string - type: 'null' title: Region description: Required for Azure volumes only. Use an Azure location code such as 'centralus', not a display name. For AWS volumes, this value is ignored and the volume storage region is used. type: object required: - volume_guid title: AiActivateCreateInventoryRequestBodyDto AiActivateCreateInventoryResponseDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider description: Provider used to execute inventory indexing, as confirmed by NOC after inventory creation. volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: API-provided volume region (default NDS region unless changed by the user). region: type: string title: Region description: Region used to execute inventory indexing, as confirmed by NOC after inventory creation. status: $ref: '#/components/schemas/AiActivateInventoryStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files included in the volume inventory. May be unavailable until inventory data is ready. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until the volume is fully indexed. type: object required: - volume_guid - volume_name - provider - region - status title: AiActivateCreateInventoryResponseDto AiActivateIndexConfigDto: properties: include_paths: anyOf: - items: type: string type: array - type: 'null' title: Include Paths exclude_paths: anyOf: - items: type: string type: array - type: 'null' title: Exclude Paths additionalProperties: false type: object title: AiActivateIndexConfigDto description: 'AI Activate search configuration (include/exclude paths) for a volume. Unified model shared by GET/POST/PATCH request bodies for ``/ai_activate/indexes/{volume_id}``. Fields are optional so PATCH callers can send only what they want to update. Scope writes require at least one visible include path after merging; every visible exclude must equal or descend from an include. POST callers may omit excludes to use an empty list. ``extra="forbid"`` — MCP toggles moved to ``/indexes/{volume_id}/mcp``. Reject legacy PATCH bodies that include ``mcp_enabled`` here so callers fail loudly (422) instead of silently having the field ignored.' AiActivateIndexConfigResponseDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the volume. May be null when NOC has no volume metadata. status: $ref: '#/components/schemas/AiActivateIndexStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files indexed for the volume. May be null until NOC reports a count. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until indexing progresses. mcp_enabled: anyOf: - type: boolean - type: 'null' title: Mcp Enabled include_paths: items: type: string type: array title: Include Paths exclude_paths: items: type: string type: array title: Exclude Paths type: object required: - volume_guid - volume_name - provider - status title: AiActivateIndexConfigResponseDto description: AI Activate index configuration returned by NOC. Reused across GET PATCH and POST AiActivateIndexConfigUpdated: properties: action: type: string const: AI Activate Index Config Updated title: Action volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name default: '' new: $ref: '#/components/schemas/AiActivateIndexDetailsDto' type: object required: - action - volume_id - new title: AiActivateIndexConfigUpdated AiActivateIndexCreated: properties: action: type: string const: AI Activate Index Created title: Action volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name default: '' type: object required: - action - volume_id title: AiActivateIndexCreated AiActivateIndexDetailsDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the volume. May be null when NOC has no volume metadata. status: $ref: '#/components/schemas/AiActivateIndexStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files indexed for the volume. May be null until NOC reports a count. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until indexing progresses. removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At description: Instant after which a requested removal stops being reversible. Null when no removal is pending for the volume, and on NOC deployments that predate the field. include_paths: items: type: string type: array title: Include Paths exclude_paths: items: type: string type: array title: Exclude Paths mcp_enabled: anyOf: - type: boolean - type: 'null' title: Mcp Enabled deprecated: true type: object required: - volume_guid - volume_name - provider - status title: AiActivateIndexDetailsDto description: 'Full AI Activate index detail for a volume — list-item fields plus search configuration. Returned by the webapi GET/POST/PATCH ``/ai_activate/indexes/{volume_id}`` endpoints so external API consumers see the same volume/index metadata as the list endpoint alongside the search configuration in a single response.' AiActivateIndexListItemDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the volume. May be null when NOC has no volume metadata. status: $ref: '#/components/schemas/AiActivateIndexStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files indexed for the volume. May be null until NOC reports a count. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until indexing progresses. removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At description: Instant after which a requested removal stops being reversible. Null when no removal is pending for the volume, and on NOC deployments that predate the field. type: object required: - volume_guid - volume_name - provider - status title: AiActivateIndexListItemDto description: A single content-index entry for a volume in the AI Activate indexes list. AiActivateIndexStatus: type: string enum: - in_progress - complete - failed - queued_for_deletion title: AiActivateIndexStatus AiActivateIndexUpdateDto: properties: include_paths: anyOf: - items: type: string type: array - type: 'null' title: Include Paths exclude_paths: anyOf: - items: type: string type: array - type: 'null' title: Exclude Paths deletion_requested: anyOf: - type: boolean - type: 'null' title: Deletion Requested description: Set to false to cancel a pending removal. DELETE the index to request one. additionalProperties: false type: object title: AiActivateIndexUpdateDto description: 'PATCH body for ``/ai_activate/indexes/{volume_id}``. Extends the search configuration with the removal flag so only PATCH accepts it — creating an index has no removal to cancel.' AiActivateIndexesResponseDto: properties: items: items: $ref: '#/components/schemas/AiActivateIndexListItemDto' type: array title: Items type: object title: AiActivateIndexesResponseDto AiActivateInventoriesResponseDto: properties: items: items: $ref: '#/components/schemas/AiActivateInventoryDto' type: array title: Items type: object title: AiActivateInventoriesResponseDto AiActivateInventoryCreated: properties: action: type: string const: AI Activate Inventory Created title: Action provider: type: string title: Provider volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name region: type: string title: Region type: object required: - action - provider - volume_id - volume_name - region title: AiActivateInventoryCreated AiActivateInventoryDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider description: Provider used to execute inventory indexing, for example AWS or Azure. volume_provider: type: string title: Volume Provider description: Cloud provider backing the source volume, for example Amazon S3 or Azure. Defaults to the index execution provider when omitted by an older Portal WebAPI deployment. volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: API-provided volume region (default NDS region unless changed by the user). region: anyOf: - type: string - type: 'null' title: Region description: Region used to execute inventory indexing. For AWS volumes, this must match the volume storage region. For Azure volumes, this must be a supported Azure location code; if different from the volume storage region, it may incur egress costs. May be null for volumes that have not been configured for indexing. status: $ref: '#/components/schemas/AiActivateInventoryStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files included in the volume inventory. May be unavailable until inventory data is ready. billable_file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Billable File Count description: Content-indexed files counted against the subscription. Null when usage has not been collected. metadata_only_file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Metadata Only File Count description: Metadata crawl files without extracted content. Null when usage has not been fully collected. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until the volume is fully indexed. removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At description: Instant after which a requested removal stops being reversible. Null when no removal is pending for the volume, and on NOC deployments that predate the field. type: object required: - volume_guid - volume_name - provider - status title: AiActivateInventoryDto AiActivateInventoryStatus: type: string enum: - Not Activated - Preparing for Volume Inventory - Volume Inventory In Progress - Ready to Activate - Activation In Progress - Active - Paused - Volume Inventory Failed - Activation Failed - Volume Inventory Expired - Removal Pending - Removed - Unknown title: AiActivateInventoryStatus AiActivateMcpAuthentication: properties: action: type: string enum: - AI Activate MCP Authentication - AI Activate MCP Refresh title: Action source_ip: anyOf: - type: string format: ipv4 - type: string format: ipv6 - type: 'null' title: Source Ip mcp_auth_user_uuid: anyOf: - type: string format: uuid - type: 'null' title: Mcp Auth User Uuid mcp_auth_client_id: anyOf: - type: string format: uuid - type: 'null' title: Mcp Auth Client Id mcp_master_email: anyOf: - type: string format: email - type: 'null' title: Mcp Master Email mcp_actor_auth_email: anyOf: - type: string format: email - type: 'null' title: Mcp Actor Auth Email type: object required: - action title: AiActivateMcpAuthentication AiActivateMcpConfigUpdated: properties: action: type: string const: AI Activate MCP Config Updated title: Action volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name default: '' old: anyOf: - $ref: '#/components/schemas/AiActivateMcpVolumeConfigDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/AiActivateMcpVolumeConfigDto' - type: 'null' type: object required: - action - volume_id title: AiActivateMcpConfigUpdated AiActivateMcpUrlDto: properties: mcp_url: type: string title: Mcp Url type: object required: - mcp_url title: AiActivateMcpUrlDto description: Customer-facing AI Activate MCP URL configured for the account. AiActivateMcpVolumeConfigDto: properties: mcp_enabled: type: boolean title: Mcp Enabled description: Whether the MCP server is enabled for this volume. allowed_file_extensions: items: type: string type: array title: Allowed File Extensions description: File extensions the MCP server filters results to. Empty list returns all file types. examples: - - pdf - docx period: anyOf: - type: integer minimum: 1.0 - type: 'null' title: Period description: 'Rolling-window filter: only include files modified within the last N days. ``null`` means ''all time''. Translated to NOC''s ``doc_mod_begin_date`` / ``doc_mod_end_date`` (``begin = today - period``, ``end = today``) at write time.' examples: - 7 - 30 - 90 - 365 - null ignore_sids: items: type: string type: array title: Ignore Sids description: Security identifiers (SIDs) the MCP server ignores when evaluating ALLOW permissions. Propagated to NOC's search spec ``ignore_sids`` field which Hyrule uses at query time. examples: - - S-1-5-21-1004336348-1177238915-682003330-512 - S-1-1-0 include_paths: items: type: string type: array title: Include Paths description: Paths the MCP server includes when returning results. Read from NOC's search spec. exclude_paths: items: type: string type: array title: Exclude Paths description: Paths the MCP server excludes when returning results. Read from NOC's search spec. volume_name: anyOf: - type: string - type: 'null' title: Volume Name description: Human-readable volume name from NOC's inventory. Null when unavailable. file_count: anyOf: - type: integer - type: 'null' title: File Count description: Number of files in the volume inventory. Null until inventory is ready. type: object required: - mcp_enabled title: AiActivateMcpVolumeConfigDto description: 'MCP query-scope configuration for a single indexed volume. Returned by GET /ai_activate/indexes/{volume_id}/mcp and by PATCH /ai_activate/indexes/{volume_id}/mcp after a successful update.' AiActivateMcpVolumeConfigUpdateDto: properties: mcp_enabled: type: boolean title: Mcp Enabled allowed_file_extensions: items: type: string type: array title: Allowed File Extensions period: anyOf: - type: integer minimum: 1.0 - type: 'null' title: Period ignore_sids: items: type: string type: array title: Ignore Sids type: object title: AiActivateMcpVolumeConfigUpdateDto description: 'Partial update body for PATCH /ai_activate/indexes/{volume_id}/mcp. Omitted fields are left unchanged. Set period to null explicitly to select ''All time''.' AiActivateMcpVolumeListItemDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files included in the volume inventory. May be null until inventory data is ready. mcp_enabled: type: boolean title: Mcp Enabled description: Whether the MCP server is currently enabled for this volume. type: object required: - volume_guid - volume_name - mcp_enabled title: AiActivateMcpVolumeListItemDto description: 'A single volume row in the MCP-server volume list. Returned by ``GET /ai_activate/indexes/mcp``. Sourced from NOC''s inventory metadata (``volume_guid``, ``volume_name``, ``file_count``) joined with the MCP service state (``mcp_enabled``) from ``ai_activate_volume_disable``.' AiActivateMcpVolumesResponseDto: properties: items: items: $ref: '#/components/schemas/AiActivateMcpVolumeListItemDto' type: array title: Items type: object title: AiActivateMcpVolumesResponseDto description: Response envelope for ``GET /ai_activate/indexes/mcp``. AiActivateRemoteSupportDto: properties: remote_support: type: boolean title: Remote Support type: object required: - remote_support title: AiActivateRemoteSupportDto AiActivateRemoteSupportUpdate: properties: action: type: string const: AI Activate Remote Support Updated title: Action old: anyOf: - $ref: '#/components/schemas/AiActivateRemoteSupportDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/AiActivateRemoteSupportDto' - type: 'null' type: object required: - action title: AiActivateRemoteSupportUpdate AiActivateSupport: properties: action: type: string const: AI Activate Support title: Action volume_ids: items: anyOf: - type: string format: uuid - type: string type: array title: Volume Ids impersonator_email: anyOf: - type: string format: email - type: 'null' title: Impersonator Email type: object required: - action - volume_ids title: AiActivateSupport AiActivateVolumeDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider volume_provider: anyOf: - type: string - type: 'null' title: Volume Provider description: Cloud provider backing the source volume. May be null on NOC deployments that predate the field. region: anyOf: - type: string - type: 'null' title: Region description: Execution region used for indexing. Null when the volume is not indexed. volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the volume. May be null when NOC has no volume metadata. status: $ref: '#/components/schemas/AiActivateInventoryStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. nds_capable: type: boolean title: Nds Capable description: Whether NOC considers the volume eligible for AI Activate. nds_disqualifications: items: type: string type: array title: Nds Disqualifications description: Reasons the volume is not eligible. Empty when nds_capable is true. removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At description: Instant after which a requested removal stops being reversible. Null when no removal is pending for the volume, and on NOC deployments that predate the field. type: object required: - volume_guid - volume_name - provider - status - nds_capable title: AiActivateVolumeDto description: 'A volume as NOC reports it on the AI Activate metadata index, indexed or not. Unlike the inventory and index lists, this keeps every volume on the account — including ones that have never been activated — so the frontend can offer them for selection and explain why the ineligible ones can''t be picked.' AiActivateVolumeRemoval: properties: action: type: string enum: - AI Activate Volume Removal Requested - AI Activate Volume Removal Cancelled title: Action volume_id: type: string title: Volume Id volume_name: anyOf: - type: string - type: 'null' title: Volume Name removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At type: object required: - action - volume_id title: AiActivateVolumeRemoval AiActivateVolumeRemovalDto: properties: volume_guid: type: string title: Volume Guid service_status: $ref: '#/components/schemas/NocInventoryServiceStatus' description: State of the AI Activate service's claim on the volume after the request. removal_deadline_at: anyOf: - type: string format: date-time - type: 'null' title: Removal Deadline At description: Instant after which the removal stops being reversible. Null when NOC does not report a deadline. type: object required: - volume_guid - service_status title: AiActivateVolumeRemovalDto description: 'Outcome of an AI Activate volume removal (soft delete) request. Returned by ``DELETE /ai_activate/indexes/{volume_id}``. The index row''s ``status`` is not echoed here: NOC transitions it asynchronously, so callers refresh the inventory list rather than trusting a status captured at request time.' AiActivateVolumesResponseDto: properties: items: items: $ref: '#/components/schemas/AiActivateVolumeDto' type: array title: Items type: object title: AiActivateVolumesResponseDto AnalyticsConnectorAwsIdsDto: properties: aws_ids: items: type: string type: array title: Aws Ids type: object required: - aws_ids title: AnalyticsConnectorAwsIdsDto AnalyticsConnectorDto: properties: key: type: string format: uuid title: Key nac_link: type: string title: Nac Link launchable: type: boolean title: Launchable unlicensed: type: boolean title: Unlicensed nac_run_history: anyOf: - items: $ref: '#/components/schemas/NacRunHistoryDto' type: array - type: 'null' title: Nac Run History can_generate: type: boolean title: Can Generate can_view: type: boolean title: Can View unifx_aws_ids: type: string title: Unifx Aws Ids type: object required: - key - nac_link - launchable - unlicensed - nac_run_history - can_generate - can_view - unifx_aws_ids title: AnalyticsConnectorDto AnalyticsConnectorKeyDto: properties: key: type: string format: uuid title: Key type: object required: - key title: AnalyticsConnectorKeyDto AnalyticsConnectorUpdate: properties: action: type: string const: Analytics Connector Updated title: Action old: anyOf: - $ref: '#/components/schemas/AnalyticsConnectorDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/AnalyticsConnectorDto' - type: 'null' type: object required: - action title: AnalyticsConnectorUpdate ApplianceDiagnosticsSent: properties: action: type: string const: Appliance Diagnostics Sent title: Action appliance_ids: items: type: string format: uuid type: array title: Appliance Ids appliance_names: items: type: string type: array title: Appliance Names task_ids: items: type: string format: uuid type: array title: Task Ids type: object required: - action title: ApplianceDiagnosticsSent description: Written once at dispatch, covering every appliance in the request. ApplianceHealthScoreDescriptionDto: properties: health_status: anyOf: - type: string - type: 'null' title: Health Status description: Health status label returned by telemetry, e.g. Healthy or Warning overview: anyOf: - type: string - type: 'null' title: Overview description: High-level explanation of the appliance condition type: object title: ApplianceHealthScoreDescriptionDto description: Descriptive text returned with appliance health score. ApplianceHealthScoreDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) serial_number: type: string title: Serial Number description: Appliance serial number associated with this health score appliance_name: type: string title: Appliance Name description: Human-readable appliance name health_score: type: string title: Health Score description: Health score text rendered in UI (0-100 or textual state) statistics: $ref: '#/components/schemas/ApplianceHealthScoreStatisticsDto' description: Summary statistics for the appliance health score description: $ref: '#/components/schemas/ApplianceHealthScoreDescriptionDto' description: Descriptive text explaining current status raw_data: $ref: '#/components/schemas/ApplianceHealthScoreRawDataDto' description: Raw charting data for the primary appliance health metric anomaly_details: additionalProperties: true type: object title: Anomaly Details description: Additional context about detected anomalies (counts, window, metric, metadata) type: object required: - serial_number - appliance_name - health_score - statistics - description - raw_data title: ApplianceHealthScoreDto description: appliance health score response following the HealthScoreResponse contract. ApplianceHealthScoreRawDataDto: properties: title: anyOf: - type: string - type: 'null' title: Title description: Chart title for the primary appliance health metric column_names: items: type: string type: array title: Column Names description: Column names used by the frontend chart data: items: $ref: '#/components/schemas/ApplianceHealthScoreRawDataRecord' type: array title: Data description: Data points for plotting type: object required: - column_names - data title: ApplianceHealthScoreRawDataDto description: Raw charting data for appliance health score. ApplianceHealthScoreRawDataRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds value: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Value description: Metric value at this timestamp type: object required: - time title: ApplianceHealthScoreRawDataRecord description: Single data point for appliance health score chart. ApplianceHealthScoreRequestDto: properties: period: type: string title: Period description: 'Time period in ISO 8601 format. Examples: ''PT1H'' (last 1 hour), ''P1D'' (last 1 day), ''2025-01-01T00:00:00Z/2025-01-02T00:00:00Z'' (specific interval), or millisecond timestamps ''1730390400000/1730476800000''. Minimum range: 6 minutes.' timezone_offset_minutes: type: integer maximum: 1440.0 minimum: -1440.0 title: Timezone Offset Minutes description: Client timezone offset in minutes relative to UTC. default: 0 type: object required: - period title: ApplianceHealthScoreRequestDto description: Request body for appliance health score, includes client timezone offset. ApplianceHealthScoreStatisticsDto: properties: cpu_count: type: integer title: Cpu Count description: Reported CPU count for the appliance used when contextualizing load default: 0 avg_load: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Avg Load description: Average load (0-n) across the sampled window rounded to two decimals default: '0' max_load: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Max Load description: Maximum load observed within the sampled window rounded to two decimals default: '0' type: object title: ApplianceHealthScoreStatisticsDto description: Summary statistics for appliance health score. ApplianceRemoteSupportDisabled: properties: action: type: string const: Appliance Remote Support Disabled title: Action type: object required: - action title: ApplianceRemoteSupportDisabled ApplianceRemoteSupportEnabled: properties: action: type: string const: Appliance Remote Support Enabled title: Action duration_hours: anyOf: - type: integer - type: 'null' title: Duration Hours expires_at: anyOf: - type: string format: date-time - type: 'null' title: Expires At type: object required: - action title: ApplianceRemoteSupportEnabled ApplianceSupportBridgeCommandRequestDto: properties: appliance_id: type: string format: uuid title: Appliance Id enabled: type: boolean title: Enabled duration_hours: anyOf: - type: integer maximum: 8760.0 minimum: 0.0 - type: 'null' title: Duration Hours type: object required: - appliance_id - enabled title: ApplianceSupportBridgeCommandRequestDto description: 'Singular WebAPI request body for support bridge connect/disconnect. Enable (timed): { "appliance_id": "...", "enabled": true, "duration_hours": 8 } Enable (always): { "appliance_id": "...", "enabled": true } Enable (always): { "appliance_id": "...", "enabled": true, "duration_hours": 0 } Disable: { "appliance_id": "...", "enabled": false } ``duration_hours=0`` is equivalent to omitting the field — both mean "no auto-expiry".' ApplianceSupportBridgeJobAcceptedDto: properties: task_id: type: string format: uuid title: Task Id type: object required: - task_id title: ApplianceSupportBridgeJobAcceptedDto description: Async acceptance payload returned by WebAPI for a single appliance command. ApplianceSupportListDto: properties: items: items: $ref: '#/components/schemas/ApplianceSupportStateDto' type: array title: Items metadata: $ref: '#/components/schemas/ApplianceSupportPaginationMetadataDto' type: object required: - metadata title: ApplianceSupportListDto ApplianceSupportPaginationMetadataDto: properties: iterator_id: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id description: Iterator ID for loading more results (null if no more) page_size: type: integer title: Page Size description: Number of items per page default: 50 total_pages: anyOf: - type: integer - type: 'null' title: Total Pages description: Total number of pages (null if unknown) total_items: type: integer title: Total Items description: Total number of items matching the query page: anyOf: - type: integer - type: 'null' title: Page description: Current page number (1-based) type: object required: - total_items title: ApplianceSupportPaginationMetadataDto description: Pagination metadata for appliance support list responses. ApplianceSupportSortBy: type: string enum: - appliance_name - enabled - duration_hours - support_connected - last_diagnostics_initiated_at title: ApplianceSupportSortBy description: Sortable columns for the appliance support list — mirror the frontend table headers. ApplianceSupportStateDto: properties: appliance_id: type: string format: uuid title: Appliance Id appliance_name: anyOf: - type: string - type: 'null' title: Appliance Name enabled: type: boolean title: Enabled default: false status: $ref: '#/components/schemas/SupportSessionState' default: inactive duration_hours: anyOf: - type: integer - type: 'null' title: Duration Hours expires_at: anyOf: - type: string format: date-time - type: 'null' title: Expires At support_connected: type: boolean title: Support Connected default: false tasks: items: $ref: '#/components/schemas/ApplianceSupportTaskDto' type: array title: Tasks default: [] last_diagnostics_initiated_at: anyOf: - type: string format: date-time - type: 'null' title: Last Diagnostics Initiated At configurable: type: boolean title: Configurable default: false type: object required: - appliance_id title: ApplianceSupportStateDto description: 'One appliance from the inventory merged with its remote-support state. Appliances without a support row use the disabled default and carry ``configurable=False`` so the UI can render them in the list but grey the row out — the row can''t be used as a ``resource_id`` for configure/diagnostics tasks until the filer heartbeats a ``services`` block.' ApplianceSupportTaskDto: properties: id: type: string format: uuid title: Id created_at: type: string format: date-time title: Created At resource: type: string title: Resource resource_id: anyOf: - type: string format: uuid - type: string - type: 'null' title: Resource Id action: type: string title: Action executor_id: anyOf: - type: string format: uuid - type: 'null' title: Executor Id state: $ref: '#/components/schemas/TaskState' reason: anyOf: - type: string - type: 'null' title: Reason can_acknowledge: type: boolean title: Can Acknowledge default: false type: object required: - id - created_at - resource - action - state title: ApplianceSupportTaskDto description: Actionable task displayed on an appliance support row. ApplianceTaskDispatchDto: properties: appliance_id: type: string format: uuid title: Appliance Id task_id: type: string format: uuid title: Task Id type: object required: - appliance_id - task_id title: ApplianceTaskDispatchDto description: One dispatched appliance and the task tracking it. ApplianceTelemetryCacheDiskIoDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryCacheDiskIoRecord' type: array title: Items description: List of cache disk I/O records type: object required: - items title: ApplianceTelemetryCacheDiskIoDto description: List of appliance cache disk I/O records ApplianceTelemetryCacheDiskIoLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskIoLatencyRecord' type: array title: Items description: List of disk IO latency records type: object required: - items title: ApplianceTelemetryCacheDiskIoLatencyDto description: Cache disk IO latency response with embedded metadata ApplianceTelemetryCacheDiskIoRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds cache_io_reads: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cache Io Reads description: Number of read operations per second performed by cache disk cache_io_writes: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cache Io Writes description: Number of write operations per second performed by cache disk type: object required: - time title: ApplianceTelemetryCacheDiskIoRecord description: Appliance cache disk I/O record. ApplianceTelemetryCacheDiskLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskLatencyRecord' type: array title: Items description: List of disk I/O latency records type: object required: - items title: ApplianceTelemetryCacheDiskLatencyDto description: Cache disk latency response with embedded metadata ApplianceTelemetryCacheHitsMissesDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryCacheHitsMissesRecord' type: array title: Items description: List of cache hit and miss records type: object required: - items title: ApplianceTelemetryCacheHitsMissesDto description: List of appliance cache hits/misses records ApplianceTelemetryCacheHitsMissesRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds cache_misses: anyOf: - type: integer - type: 'null' title: Cache Misses description: Cache misses requiring cloud fetch - high values suggest insufficient cache or cold data cache_reads: anyOf: - type: integer - type: 'null' title: Cache Reads description: Number of cache read operations (hits) type: object required: - time title: ApplianceTelemetryCacheHitsMissesRecord description: Appliance cache hits/misses record. ApplianceTelemetryCacheUtilizationDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryCacheUtilizationRecord' type: array title: Items description: List of cache utilization records type: object required: - items title: ApplianceTelemetryCacheUtilizationDto description: List of appliance cache utilization records ApplianceTelemetryCacheUtilizationRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds cache_utilization: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cache Utilization description: Percentage (0-100) of cache disk used - near 100% causes evictions and misses type: object required: - time title: ApplianceTelemetryCacheUtilizationRecord description: Appliance cache utilization record. ApplianceTelemetryCorePerformanceDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) cpu_util: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cpu Util description: CPU utilization as percentage (0-100) available_memory: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Available Memory description: Available memory (NOC field name is memUsage but represents available) fifteen_minute_load_average: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Fifteen Minute Load Average description: 15-min rolling average of processes in run queue or waiting for CPU time: anyOf: - type: integer - type: 'null' title: Time description: Timestamp in milliseconds uptime: anyOf: - type: integer - type: 'null' title: Uptime description: System uptime in seconds num_cores: anyOf: - type: integer - type: 'null' title: Num Cores description: Number of CPU cores available on the appliance. Null when the core count is unavailable. type: object title: ApplianceTelemetryCorePerformanceDto description: Appliance core performance metrics ApplianceTelemetryCowDiskIoDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryCowDiskIoRecord' type: array title: Items description: List of Copy-on-Write disk I/O records type: object required: - items title: ApplianceTelemetryCowDiskIoDto description: List of appliance CoW Disk IOPS records ApplianceTelemetryCowDiskIoLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskIoLatencyRecord' type: array title: Items description: List of disk IO latency records type: object required: - items title: ApplianceTelemetryCowDiskIoLatencyDto description: CoW disk IO latency response with embedded metadata ApplianceTelemetryCowDiskIoRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds cow_disk_io_reads: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cow Disk Io Reads description: Number of read operations per second on Copy-on-Write disk cow_disk_io_writes: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cow Disk Io Writes description: Number of write operations per second on Copy-on-Write disk type: object required: - time title: ApplianceTelemetryCowDiskIoRecord description: Appliance CoW Disk IOPS record. ApplianceTelemetryCowDiskLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskLatencyRecord' type: array title: Items description: List of disk I/O latency records type: object required: - items title: ApplianceTelemetryCowDiskLatencyDto description: CoW disk latency response with embedded metadata ApplianceTelemetryCpuLoadAvgGraphDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: additionalProperties: true type: object type: array title: Items description: List of CPU load average records num_cores: anyOf: - type: integer - type: 'null' title: Num Cores description: CPU core count used for load comparison. Null when the core count is unavailable. type: object required: - items - num_cores title: ApplianceTelemetryCpuLoadAvgGraphDto description: CPU load average graph data with core count ApplianceTelemetryCpuUsageDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryCpuUsageRecord' type: array title: Items description: List of CPU usage records type: object required: - items title: ApplianceTelemetryCpuUsageDto description: List of appliance CPU usage records ApplianceTelemetryCpuUsageRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds cpu_usage: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Cpu Usage description: CPU usage percentage (0-100) - sustained high (>80%) degrades performance type: object required: - time title: ApplianceTelemetryCpuUsageRecord description: Appliance CPU usage record. ApplianceTelemetryDiskIoLatencyRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds read_latency: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Read Latency description: Average read latency in milliseconds for the disk write_latency: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Write Latency description: Average write latency in milliseconds for the disk type: object required: - time title: ApplianceTelemetryDiskIoLatencyRecord description: Appliance disk IO latency record with read/write latency. ApplianceTelemetryDiskLatencyRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds io_time: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Io Time description: Time in milliseconds spent on I/O operations weighted_io_time: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Weighted Io Time description: Weighted I/O time in ms - much higher than io_time indicates saturation type: object required: - time title: ApplianceTelemetryDiskLatencyRecord description: Appliance disk latency record. ApplianceTelemetryDurationRequestDto: properties: period: type: string title: Period description: 'Time period in ISO 8601 format. Examples: ''PT1H'' (last 1 hour), ''P1D'' (last 1 day), ''2025-01-01T00:00:00Z/2025-01-02T00:00:00Z'' (specific interval), or millisecond timestamps ''1730390400000/1730476800000''. Minimum range: 6 minutes.' type: object required: - period title: ApplianceTelemetryDurationRequestDto description: Appliance telemetry duration request with 30-day limit. ApplianceTelemetryFileIqDiskIoDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryFileIqDiskIoRecord' type: array title: Items type: object required: - items title: ApplianceTelemetryFileIqDiskIoDto description: List of appliance File IQ DB Disk IOPS records ApplianceTelemetryFileIqDiskIoLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskIoLatencyRecord' type: array title: Items description: List of disk IO latency records type: object required: - items title: ApplianceTelemetryFileIqDiskIoLatencyDto description: File IQ disk IO latency response with embedded metadata ApplianceTelemetryFileIqDiskIoRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds file_iq_disk_io_reads: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: File Iq Disk Io Reads description: Number of read operations per second on File IQ disk file_iq_disk_io_writes: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: File Iq Disk Io Writes description: Number of write operations per second on File IQ disk type: object required: - time title: ApplianceTelemetryFileIqDiskIoRecord description: Appliance File IQ DB Disk IOPS record. ApplianceTelemetryFileIqDiskLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskLatencyRecord' type: array title: Items description: List of disk I/O latency records type: object required: - items title: ApplianceTelemetryFileIqDiskLatencyDto description: File IQ disk latency response with embedded metadata ApplianceTelemetryMemoryUtilizationDetailsDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryMemoryUtilizationDetailsRecord' type: array title: Items description: Detailed memory utilization records (v10.0.4+) type: object required: - items title: ApplianceTelemetryMemoryUtilizationDetailsDto description: List of appliance memory utilization details records ApplianceTelemetryMemoryUtilizationDetailsRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds total: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Total description: Total memory in KB available: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Available description: Available memory in KB - memory that can be allocated without swapping shared: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Shared description: Shared memory in KB buf_rec: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Buf Rec description: Buffer/reclaimable memory in KB free: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Free description: Free memory in KB used: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Used description: Used memory in KB utilization: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Utilization description: Memory utilization as percentage (0-100) calculated as (Total - Available) / Total * 100 type: object required: - time - total - available - shared - buf_rec - free - used - utilization title: ApplianceTelemetryMemoryUtilizationDetailsRecord description: Appliance detailed memory utilization record (v10.0.4+). ApplianceTelemetryMemoryUtilizationDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryMemoryUtilizationRecord' type: array title: Items description: List of memory utilization records (pre-v10.0.4) type: object required: - items title: ApplianceTelemetryMemoryUtilizationDto description: List of appliance memory utilization records ApplianceTelemetryMemoryUtilizationRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds memory_used: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Memory Used description: Amount of used memory in KB memory_cached: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Memory Cached description: Amount of cached memory in KB memory_buffered: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Memory Buffered description: Amount of buffered memory in KB type: object required: - time title: ApplianceTelemetryMemoryUtilizationRecord description: Appliance memory utilization record (pre-v10.0.4). ApplianceTelemetryNetworkThroughputDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryNetworkThroughputRecord' type: array title: Items description: List of network throughput records type: object required: - items title: ApplianceTelemetryNetworkThroughputDto description: List of appliance network throughput records ApplianceTelemetryNetworkThroughputRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds clients_in: anyOf: - type: integer - type: 'null' title: Clients In description: Bytes per second incoming from client connections clients_out: anyOf: - type: integer - type: 'null' title: Clients Out description: Bytes per second outgoing to client connections cloud_in: anyOf: - type: integer - type: 'null' title: Cloud In description: Bytes per second incoming from cloud - high values suggest data ingestion cloud_out: anyOf: - type: integer - type: 'null' title: Cloud Out description: Bytes/sec to cloud - high values suggest cache misses or restores type: object required: - time title: ApplianceTelemetryNetworkThroughputRecord description: Appliance network throughput record. ApplianceTelemetryOsDiskIoDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryOsDiskIoRecord' type: array title: Items description: List of OS disk I/O records type: object required: - items title: ApplianceTelemetryOsDiskIoDto description: List of appliance OS disk I/O records ApplianceTelemetryOsDiskIoLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskIoLatencyRecord' type: array title: Items description: List of disk IO latency records type: object required: - items title: ApplianceTelemetryOsDiskIoLatencyDto description: OS disk IO latency response with embedded metadata ApplianceTelemetryOsDiskIoRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds os_disk_io_reads: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Os Disk Io Reads description: Number of read operations per second on OS disk os_disk_io_writes: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Os Disk Io Writes description: Number of write operations per second on OS disk type: object required: - time title: ApplianceTelemetryOsDiskIoRecord description: Appliance OS disk I/O record. ApplianceTelemetryOsDiskLatencyDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetryDiskLatencyRecord' type: array title: Items description: List of disk I/O latency records type: object required: - items title: ApplianceTelemetryOsDiskLatencyDto description: OS disk latency response with embedded metadata ApplianceTelemetryRequestDto: properties: period: type: string title: Period description: 'Time period in ISO 8601 format. Examples: ''PT1H'' (last 1 hour), ''P1D'' (last 1 day), ''2025-01-01T00:00:00Z/2025-01-02T00:00:00Z'' (specific interval), or millisecond timestamps ''1730390400000/1730476800000''. Minimum range: 6 minutes.' panel_width: anyOf: - type: integer maximum: 5200.0 minimum: 100.0 - type: 'null' title: Panel Width description: Panel width in pixels (100-5200) bin_size: anyOf: - type: integer maximum: 3600.0 minimum: 60.0 - type: 'null' title: Bin Size description: Bin size for data aggregation (60-3600) type: object required: - period title: ApplianceTelemetryRequestDto description: Request DTO for appliance telemetry data (filer_id is in URL path). ApplianceTelemetrySMBConnectionsDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/ApplianceTelemetrySMBConnectionsRecord' type: array title: Items description: List of SMB connection records type: object required: - items title: ApplianceTelemetrySMBConnectionsDto description: List of appliance SMB connections records ApplianceTelemetrySMBConnectionsRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds connections: anyOf: - type: integer - type: 'null' title: Connections description: Number of active SMB sessions - sudden drops may indicate network issues type: object required: - time title: ApplianceTelemetrySMBConnectionsRecord description: Appliance SMB connections record. ApplianceType: type: string enum: - nmc - naa - edge - uaas - file_iq - naada - awada - desktop - ha_edge title: ApplianceType AuthCode: properties: action: type: string enum: - Auth Code Requested - Auth Code Reset - Serial Number Decommission title: Action type: object required: - action title: AuthCode AuthCodeDto: properties: auth_code: type: string title: Auth Code type: object required: - auth_code title: AuthCodeDto AuthMethod: type: string enum: - noc_token - service_key - user_key - mcp title: AuthMethod Authentication: properties: action: type: string enum: - Authorized Login - Authorized Logout - Access Refresh - Session Expired title: Action auth_method: anyOf: - $ref: '#/components/schemas/AuthMethod' - type: 'null' impersonator_email: anyOf: - type: string format: email - type: 'null' title: Impersonator Email type: object required: - action title: Authentication AzureCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: azure title: Cred Type default: azure region_code: anyOf: - type: string - type: 'null' title: Region Code type: object required: - name - username - secret - appliance_id title: AzureCredentialRequest AzureCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: azure title: Cred Type default: azure region_code: anyOf: - type: string - type: 'null' title: Region Code type: object required: - name - username - appliance_ids title: AzureCredentialUpdateRequest BaseRoleDto: properties: id: type: string format: uuid title: Id created: type: string format: date-time title: Created last_updated: type: string format: date-time title: Last Updated name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names default: [] editable: type: boolean title: Editable default: true deletable: type: boolean title: Deletable default: true type: object required: - id - created - last_updated - name title: BaseRoleDto Bucket: properties: name: type: string title: Name path: type: string title: Path volume: type: string title: Volume roles: anyOf: - additionalProperties: items: type: string type: array type: object - type: 'null' title: Roles additionalProperties: false type: object required: - name - path - volume title: Bucket BucketSDDL: properties: name: type: string title: Name path: type: string title: Path volume: type: string title: Volume roles: anyOf: - additionalProperties: items: type: string type: array type: object - type: 'null' title: Roles file_sddl: type: string title: File Sddl dir_sddl: type: string title: Dir Sddl additionalProperties: false type: object required: - name - path - volume - file_sddl - dir_sddl title: BucketSDDL CleversafeCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: cleversafe title: Cred Type default: cleversafe type: object required: - name - username - secret - appliance_id title: CleversafeCredentialRequest CloudCredentialCreateFailed: properties: action: type: string const: Cloud Credential Create Failed title: Action name: type: string title: Name edge_name: type: string title: Edge Name error: type: string title: Error type: object required: - action - name - edge_name - error title: CloudCredentialCreateFailed CloudCredentialCreated: properties: action: type: string const: Cloud Credential Created title: Action name: type: string title: Name cred_type: type: string title: Cred Type edge_name: type: string title: Edge Name type: object required: - action - name - cred_type - edge_name title: CloudCredentialCreated CloudCredentialDeleteFailed: properties: action: type: string const: Cloud Credential Delete Failed title: Action name: type: string title: Name edge_name: type: string title: Edge Name error: type: string title: Error type: object required: - action - name - edge_name - error title: CloudCredentialDeleteFailed CloudCredentialDeleteRequest: properties: appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids description: Target appliance IDs for delete fan-out type: object required: - appliance_ids title: CloudCredentialDeleteRequest description: Delete request body — explicit target appliance IDs. CloudCredentialDeleteResponseDto: properties: task_ids: items: type: string format: uuid type: array title: Task Ids description: Tasks dispatched to reachable appliances — one id per appliance failed_unreachable: items: $ref: '#/components/schemas/FailedUnreachableEdgeDto' type: array title: Failed Unreachable description: Per-appliance task rows created directly in `failed` state because the appliance was unreachable at request time. The user must retry the delete for those appliances once they come back online. type: object required: - task_ids title: CloudCredentialDeleteResponseDto description: Response for a credential delete request — split by per-appliance outcome. CloudCredentialDeleted: properties: action: type: string const: Cloud Credential Deleted title: Action name: type: string title: Name edge_name: type: string title: Edge Name type: object required: - action - name - edge_name title: CloudCredentialDeleted CloudCredentialDto: properties: id: type: string format: uuid title: Id appliance_id: type: string format: uuid title: Appliance Id description: Appliance GUID owning this credential appliance_name: type: string title: Appliance Name description: Appliance name appliance_serial: type: string format: uuid title: Appliance Serial description: Serial number of the edge appliance appliance_credential_uuid: type: string title: Appliance Credential Uuid description: UUID assigned to the credential by the appliance name: type: string title: Name shortname: $ref: '#/components/schemas/NocCloudProvider' cred_type: $ref: '#/components/schemas/NocCloudStorageProtocol' hostname: type: string title: Hostname access_key: type: string title: Access Key vendor: $ref: '#/components/schemas/NocCloudVendor' note: anyOf: - type: string - type: 'null' title: Note verify_certificates: type: boolean title: Verify Certificates default: true certificate: anyOf: - type: string - type: 'null' title: Certificate region_code: anyOf: - type: string - type: 'null' title: Region Code is_stub: type: boolean title: Is Stub description: True while this row is a Portal-created placeholder awaiting filer confirmation default: false status: $ref: '#/components/schemas/CloudCredentialStatus' description: Derived from latest task state for this credential+edge pair error: anyOf: - $ref: '#/components/schemas/CloudCredentialErrorDto' - type: 'null' description: Error details when status is 'failed'; null otherwise volumes: items: $ref: '#/components/schemas/CloudCredentialVolumeDto' type: array title: Volumes description: Volumes using this credential created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - id - appliance_id - appliance_name - appliance_serial - appliance_credential_uuid - name - shortname - cred_type - hostname - access_key - vendor - status - created_at - updated_at title: CloudCredentialDto description: Response DTO for a single cloud credential. CloudCredentialErrorAcknowledged: properties: action: type: string const: Cloud Credential Error Acknowledged title: Action name: type: string title: Name edge_name: type: string title: Edge Name type: object required: - action - name - edge_name title: CloudCredentialErrorAcknowledged CloudCredentialErrorDto: properties: task_id: type: string format: uuid title: Task Id description: Task ID that failed — used by the frontend to acknowledge/dismiss the error action: anyOf: - type: string - type: 'null' title: Action description: Persisted task action can_acknowledge: type: boolean title: Can Acknowledge description: Whether the current caller may acknowledge this failed task default: false code: anyOf: - type: integer - type: 'null' title: Code description: 408 for synthetic timeouts; null for explicit task failures error: type: string title: Error description: Error category ('timeout' for synthetic timeouts, 'unknown' for explicit task failures) message: type: string title: Message description: Human-readable error description detected_at: type: string format: date-time title: Detected At description: Task failure transition time, or created_at plus timeout for synthetic timeouts type: object required: - task_id - error - message - detected_at title: CloudCredentialErrorDto description: 'Error details returned when credential status is ''failed''. Populated from the failed task''s customer-safe reason, or synthetically when the edge does not respond within the timeout window.' CloudCredentialPaginationMetadataDto: properties: iterator_id: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id description: Iterator ID for loading more results (null if no more) page_size: type: integer title: Page Size description: Number of items per page default: 50 total_pages: anyOf: - type: integer - type: 'null' title: Total Pages description: Total number of pages (null if unknown) total_items: type: integer title: Total Items description: Total number of items matching the query page: anyOf: - type: integer - type: 'null' title: Page description: Current page number (1-based) type: object required: - total_items title: CloudCredentialPaginationMetadataDto description: Pagination metadata for credential list responses. CloudCredentialSortBy: type: string enum: - name - shortname - hostname - access_key - note - created_at - updated_at - appliance_name title: CloudCredentialSortBy description: Sortable columns for credential list queries. CloudCredentialStatus: type: string enum: - synced - pending - failed - creating title: CloudCredentialStatus description: Derived status of a credential on a specific edge. CloudCredentialUpdateFailed: properties: action: type: string const: Cloud Credential Update Failed title: Action name: type: string title: Name edge_name: type: string title: Edge Name error: type: string title: Error type: object required: - action - name - edge_name - error title: CloudCredentialUpdateFailed CloudCredentialUpdateResponseDto: properties: task_ids: items: type: string format: uuid type: array title: Task Ids description: Tasks dispatched to reachable appliances — one id per appliance failed_unreachable: items: $ref: '#/components/schemas/FailedUnreachableEdgeDto' type: array title: Failed Unreachable description: Per-appliance task rows created directly in `failed` state because the appliance was unreachable at request time. The user must retry the update for those appliances once they come back online. type: object required: - task_ids title: CloudCredentialUpdateResponseDto description: Response for a credential update request — split by per-appliance outcome. CloudCredentialUpdated: properties: action: type: string const: Cloud Credential Updated title: Action name: type: string title: Name cred_type: type: string title: Cred Type edge_name: type: string title: Edge Name changed_fields: items: type: string type: array title: Changed Fields type: object required: - action - name - cred_type - edge_name title: CloudCredentialUpdated CloudCredentialVolumeDto: properties: volume_id: type: string title: Volume Id description: Volume UUID string (e.g. 'uuid_0') name: type: string title: Name description: Volume display name type: object required: - volume_id - name title: CloudCredentialVolumeDto description: Lightweight volume reference associated with a credential. CloudCredentialsDto: properties: items: items: $ref: '#/components/schemas/CloudCredentialDto' type: array title: Items metadata: $ref: '#/components/schemas/CloudCredentialPaginationMetadataDto' type: object required: - metadata title: CloudCredentialsDto description: Response DTO for a list of cloud credentials with cursor-based pagination. CloudProviderEntryDto: properties: protocol: $ref: '#/components/schemas/NocCloudStorageProtocol' vendor: $ref: '#/components/schemas/NocCloudVendor' shortname: $ref: '#/components/schemas/NocCloudProvider' display_name: type: string title: Display Name description: Human-readable name for the cloud provider type: object required: - protocol - vendor - shortname - display_name title: CloudProviderEntryDto description: A cloud provider available to the account. ConnectionPermission: type: string enum: - READONLY - READWRITE - Custom title: ConnectionPermission CreateRoleDto: properties: name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names default: [] permissions: items: type: string format: uuid type: array title: Permissions default: [] type: object required: - name title: CreateRoleDto CreateServiceKeyRequestBodyDto: properties: name: type: string title: Name roles: items: type: string format: uuid type: array title: Roles type: object required: - name - roles title: CreateServiceKeyRequestBodyDto CreateServiceKeyResponseDto: properties: id: type: string format: uuid title: Id name: type: string title: Name key: type: string title: Key roles: items: type: string format: uuid type: array title: Roles date_created: type: string format: date-time title: Date Created last_accessed: type: string format: date-time title: Last Accessed secret: type: string title: Secret type: object required: - id - name - key - roles - date_created - last_accessed - secret title: CreateServiceKeyResponseDto CreatedOrDeleted: properties: action: type: string enum: - Service Key Created - Service Key Deleted - User Key Created - User Key Deleted - GFA API Key Created - GFA API Key Deleted title: Action id: type: string format: uuid title: Id type: object required: - action - id title: CreatedOrDeleted DownloadChecksumResponseDto: properties: sha256_checksum: type: string maxLength: 64 minLength: 64 pattern: ^[A-Fa-f0-9]{64}$ title: Sha256 Checksum type: object required: - sha256_checksum title: DownloadChecksumResponseDto description: Response DTO containing a published SHA-256 checksum. DownloadInfoDto: properties: appliance_type: $ref: '#/components/schemas/ApplianceType' version: anyOf: - type: string - type: 'null' title: Version platform: type: string title: Platform availability: type: string enum: - url - cloud title: Availability default: url display_name: type: string title: Display Name description: Display name of the appliance type id: anyOf: - type: string format: uuid - type: 'null' title: Id checksum_available: type: boolean title: Checksum Available default: false type: object required: - appliance_type - platform - display_name title: DownloadInfoDto DownloadUrlResponseDto: properties: download_url: anyOf: - type: string - type: 'null' title: Download Url type: object required: - download_url title: DownloadUrlResponseDto description: Response DTO containing the download URL for a specific download. DownloadsDto: properties: items: items: $ref: '#/components/schemas/DownloadInfoDto' type: array title: Items type: object title: DownloadsDto DuplicateRoleDto: properties: source_role_id: type: string format: uuid title: Source Role Id name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names default: [] type: object required: - source_role_id - name title: DuplicateRoleDto EdgeAccessPoints: properties: web_access_enabled: anyOf: - type: boolean - type: 'null' title: Web Access Enabled web_access_share_count: anyOf: - type: integer - type: 'null' title: Web Access Share Count smb_share_count: anyOf: - type: integer - type: 'null' title: Smb Share Count smb_client_count: anyOf: - type: integer - type: 'null' title: Smb Client Count smb_lock_count: anyOf: - type: integer - type: 'null' title: Smb Lock Count nfs_export_count: anyOf: - type: integer - type: 'null' title: Nfs Export Count ftp_directory_count: anyOf: - type: integer - type: 'null' title: Ftp Directory Count type: object title: EdgeAccessPoints description: Read-only appliance access-point summary values. EdgeAutomaticUpdates: properties: enabled: anyOf: - type: boolean - type: 'null' title: Enabled schedule: anyOf: - type: string - type: 'null' title: Schedule type: object title: EdgeAutomaticUpdates description: Read-only automatic-update values reported by the appliance. EdgeBuild: properties: current: type: string title: Current available: anyOf: - type: string - type: 'null' title: Available platform: anyOf: - type: string - type: 'null' title: Platform type: object required: - current title: EdgeBuild EdgeDescriptionUpdated: properties: action: type: string const: Appliance Description Updated title: Action description: type: string title: Description type: object required: - action - description title: EdgeDescriptionUpdated EdgeDetailsDto: properties: items: items: $ref: '#/components/schemas/EdgeDto' type: array title: Items type: object title: EdgeDetailsDto EdgeDto: properties: id: type: string format: uuid title: Id description: type: string title: Description type: $ref: '#/components/schemas/EdgeType' default: Edge services: $ref: '#/components/schemas/EdgeServicesDto' serial: type: string format: uuid title: Serial instance_id: anyOf: - type: string format: uuid - type: 'null' title: Instance Id synced: type: boolean title: Synced default: false is_reachable: type: boolean title: Is Reachable default: false last_seen_at: anyOf: - type: string format: date-time - type: 'null' title: Last Seen At owned_volumes: anyOf: - type: integer - type: 'null' title: Owned Volumes remotely_connected_volumes: anyOf: - type: integer - type: 'null' title: Remotely Connected Volumes volumes: $ref: '#/components/schemas/EdgeVolumes' build: $ref: '#/components/schemas/EdgeBuild' machine: $ref: '#/components/schemas/EdgeMachine' ipaddress: anyOf: - type: string - type: 'null' title: Ipaddress hostname: anyOf: - type: string - type: 'null' title: Hostname uptime_seconds: anyOf: - type: integer - type: 'null' title: Uptime Seconds health_status: anyOf: - additionalProperties: true type: object - type: 'null' title: Health Status location: anyOf: - type: string - type: 'null' title: Location last_config_backup_date: anyOf: - type: string - type: 'null' title: Last Config Backup Date reported_account_max_now_storage: anyOf: - type: integer - type: 'null' title: Reported Account Max Now Storage reported_account_current_now_storage: anyOf: - type: integer - type: 'null' title: Reported Account Current Now Storage ds_type: anyOf: - type: string - type: 'null' title: Ds Type system: anyOf: - $ref: '#/components/schemas/EdgeSystem' - type: 'null' tasks: anyOf: - items: $ref: '#/components/schemas/TaskStateSummaryDto' type: array - type: 'null' title: Tasks type: object required: - id - description - serial - volumes - build - machine title: EdgeDto EdgeFiqServiceConfigUpdate: properties: action: type: string const: Edge FIQ Service Config Updated title: Action old: $ref: '#/components/schemas/EdgeFiqServiceDto' new: $ref: '#/components/schemas/EdgeFiqServiceDto' type: object required: - action - old - new title: EdgeFiqServiceConfigUpdate EdgeFiqServiceDto: properties: enabled: type: boolean title: Enabled connected_file_iq_serial: anyOf: - type: string format: uuid - type: 'null' title: Connected File Iq Serial type: object required: - enabled title: EdgeFiqServiceDto EdgeMachine: properties: cpu: anyOf: - type: string - type: 'null' title: Cpu ram: anyOf: - type: string - type: 'null' title: Ram cache_disk: anyOf: - type: string - type: 'null' title: Cache Disk os_disk: anyOf: - type: string - type: 'null' title: Os Disk fiq_disk: anyOf: - type: string - type: 'null' title: Fiq Disk cow_disk: anyOf: - type: string - type: 'null' title: Cow Disk cpu_cores: anyOf: - type: integer - type: 'null' title: Cpu Cores vm_instance_type: anyOf: - type: string - type: 'null' title: Vm Instance Type vm_region: anyOf: - type: string - type: 'null' title: Vm Region type: object title: EdgeMachine EdgeS3EdgeConfigDto: properties: enabled: type: boolean title: Enabled type: object required: - enabled title: EdgeS3EdgeConfigDto EdgeServicesDto: properties: s3_edge: anyOf: - type: boolean - type: 'null' title: S3 Edge file_iq: anyOf: - type: boolean - type: 'null' title: File Iq type: object title: EdgeServicesDto EdgeStriderSystem: properties: vm_management: anyOf: - type: string - type: 'null' title: Vm Management scale_factor: anyOf: - type: integer - type: 'null' title: Scale Factor fault_tolerance: anyOf: - type: string - type: 'null' title: Fault Tolerance type: object title: EdgeStriderSystem description: Strider-only values prepared by the appliance read model. EdgeSystem: properties: automatic_updates: anyOf: - $ref: '#/components/schemas/EdgeAutomaticUpdates' - type: 'null' remote_support: anyOf: - type: string - type: 'null' title: Remote Support time_configuration: anyOf: - type: string - type: 'null' title: Time Configuration cache_eviction_settings: anyOf: - type: string - type: 'null' title: Cache Eviction Settings ip_source: anyOf: - type: string - type: 'null' title: Ip Source default_gateway: anyOf: - type: string - type: 'null' title: Default Gateway dns_servers: anyOf: - type: string - type: 'null' title: Dns Servers search_domains: anyOf: - type: string - type: 'null' title: Search Domains snmp_enabled: anyOf: - type: boolean - type: 'null' title: Snmp Enabled qos_rule_count: anyOf: - type: integer - type: 'null' title: Qos Rule Count syslog_enabled: anyOf: - type: boolean - type: 'null' title: Syslog Enabled disk_encryption: anyOf: - type: string - type: 'null' title: Disk Encryption encryption_key_count: anyOf: - type: integer - type: 'null' title: Encryption Key Count escrow_passphrase_enabled: anyOf: - type: boolean - type: 'null' title: Escrow Passphrase Enabled ssl_certificate_name: anyOf: - type: string - type: 'null' title: Ssl Certificate Name ssl_certificate_count: anyOf: - type: integer - type: 'null' title: Ssl Certificate Count strider: anyOf: - $ref: '#/components/schemas/EdgeStriderSystem' - type: 'null' access_points: anyOf: - $ref: '#/components/schemas/EdgeAccessPoints' - type: 'null' type: object title: EdgeSystem description: Read-only system values. ``None`` means the appliance did not report it. EdgeTarget: properties: action: type: string enum: - S3 Edge Enabled - S3 Edge Disabled title: Action type: object required: - action title: EdgeTarget EdgeType: type: string enum: - Edge - Strider title: EdgeType EdgeVolumes: properties: owned: anyOf: - type: integer - type: 'null' title: Owned remotely_connected: anyOf: - type: integer - type: 'null' title: Remotely Connected type: object title: EdgeVolumes EdgeVolumesResponseDto: properties: items: items: $ref: '#/components/schemas/VolumeDto' type: array title: Items type: object title: EdgeVolumesResponseDto description: GET /edges/{edge_id}/volumes response — every volume the appliance connects, owned or remotely mounted. EdgesDto: properties: items: items: $ref: '#/components/schemas/SimpleEdgeDto' type: array title: Items type: object title: EdgesDto EmailUpdate: properties: action: type: string const: Email Updated title: Action old: type: string format: email title: Old new: type: string format: email title: New type: object required: - action - old - new title: EmailUpdate EncryptionKeyDto: properties: id: type: string format: uuid title: Id fingerprint: type: string title: Fingerprint name: type: string title: Name type: object required: - id - fingerprint - name title: EncryptionKeyDto description: A single non-backup encryption key available on an appliance. EncryptionKeysResponseDto: properties: keys: items: $ref: '#/components/schemas/EncryptionKeyDto' type: array title: Keys type: object required: - keys title: EncryptionKeysResponseDto EnterpriseSearchAccountInfoDto: properties: subscribed_limit: type: integer minimum: 0.0 title: Subscribed Limit description: Total files allowed for the Search subscription. searchable_files: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Searchable Files description: Files already indexed and searchable. Null when usage has not been collected. remaining_capacity: anyOf: - type: integer - type: 'null' title: Remaining Capacity description: Files remaining before reaching the limit. May be negative when the account is over capacity. Null when usage has not been collected. type: object required: - subscribed_limit title: EnterpriseSearchAccountInfoDto description: 'Account-level Enterprise Search subscription summary. Enterprise Search has one subscription, so the fields sit at the top level rather than under a wrapper key (contrast AI Activate, whose DTO nests workloads under ``mcp`` to leave room for future subscription types).' EnterpriseSearchCreateInventoryRequestDto: properties: edge_id: type: string format: uuid title: Edge Id additionalProperties: false type: object required: - edge_id title: EnterpriseSearchCreateInventoryRequestDto EnterpriseSearchEdgeInventoriesResponseDto: properties: items: items: $ref: '#/components/schemas/EnterpriseSearchSummaryEdgeInventoryDto' type: array title: Items type: object title: EnterpriseSearchEdgeInventoriesResponseDto EnterpriseSearchEdgeInventoryDto: properties: edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name edge_description: type: string title: Edge Description edge_serial: type: string title: Edge Serial days_until_expiry: anyOf: - type: integer - type: 'null' title: Days Until Expiry description: Days until the first volume on this edge expires. search_inventory_status: $ref: '#/components/schemas/EnterpriseSearchInventoryStatus' description: Derived from the aggregate status of the edge's volumes. file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Sum of the reported per-volume file counts on this edge. Volumes whose count NOC has not reported yet are excluded, so this can undercount until every volume has data; null when no volume has reported a count. volumes: items: $ref: '#/components/schemas/EnterpriseSearchInventoryVolumeDto' type: array title: Volumes type: object required: - edge_id - edge_name - edge_description - edge_serial - search_inventory_status - volumes title: EnterpriseSearchEdgeInventoryDto description: 'Response shape for GET /enterprise-search/inventories/{edge_id}, POST /enterprise-search/inventories, and PATCH /enterprise-search/inventories/{edge_id}.' EnterpriseSearchEdgeRepositoriesDto: properties: items: items: $ref: '#/components/schemas/EnterpriseSearchRepositoryEdgeSummaryDto' type: array title: Items type: object title: EnterpriseSearchEdgeRepositoriesDto EnterpriseSearchEdgeSharesResponseDto: properties: edge_id: type: string format: uuid title: Edge Id shares: items: $ref: '#/components/schemas/EnterpriseSearchShareDto' type: array title: Shares type: object required: - edge_id title: EnterpriseSearchEdgeSharesResponseDto description: 'Every SMB share one appliance exposes, regardless of inventory state. PM-1951: the roster comes from the appliance''s own Web Access configuration, so it is known before any inventory runs — only the file counts wait on one.' EnterpriseSearchInventoryCreated: properties: action: type: string const: Enterprise Search Inventory Created title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name type: object required: - action - edge_id - edge_name title: EnterpriseSearchInventoryCreated EnterpriseSearchInventoryStatus: type: string enum: - Not Activated - Preparing for Volume Inventory - Volume Inventory In Progress - Ready to Activate - Volume Inventory Failed - Volume Inventory Expired - Removal Pending - Removed - Unknown title: EnterpriseSearchInventoryStatus description: 'Enterprise Search volume-inventory lifecycle status. Owned by Enterprise Search — deliberately not shared with or aliased from AI Activate, since the two features are independently licensed and their lifecycles may diverge. Values are listed in the order they occur in the inventory lifecycle.' EnterpriseSearchInventoryUpdated: properties: action: type: string const: Enterprise Search Inventory Updated title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name changes: anyOf: - additionalProperties: true type: object - type: 'null' title: Changes type: object required: - action - edge_id - edge_name title: EnterpriseSearchInventoryUpdated EnterpriseSearchInventoryVolumeDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider description: Provider used to execute inventory indexing. This should match the volume cloud provider, for example AWS or Azure. volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: API-provided volume region (default NDS region unless changed by the user). region: anyOf: - type: string - type: 'null' title: Region description: Region used to execute inventory indexing. For AWS volumes, this must match the volume storage region. For Azure volumes, this must be a supported Azure location code; if different from the volume storage region, it may incur egress costs. May be null for volumes that have not been configured for indexing. days_until_expiry: anyOf: - type: integer minimum: 0.0 - type: 'null' title: Days Until Expiry description: Days until this volume's inventory expires. status: $ref: '#/components/schemas/EnterpriseSearchInventoryStatus' file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files included in the volume inventory. May be unavailable until inventory data is ready. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until the volume is fully indexed. type: object required: - volume_guid - volume_name - provider - status title: EnterpriseSearchInventoryVolumeDto EnterpriseSearchRepositoryCreateRequestDto: properties: edge_id: type: string format: uuid title: Edge Id additionalProperties: false type: object required: - edge_id title: EnterpriseSearchRepositoryCreateRequestDto EnterpriseSearchRepositoryCreated: properties: action: type: string const: Enterprise Search Repository Created title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name type: object required: - action - edge_id - edge_name title: EnterpriseSearchRepositoryCreated EnterpriseSearchRepositoryEdgeDto: properties: edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name edge_description: type: string title: Edge Description edge_serial: type: string title: Edge Serial status: $ref: '#/components/schemas/EnterpriseSearchRepositoryStatus' description: Search-index lifecycle state, overridden by the appliance's Portal-owned pause state. volume_count: type: integer minimum: 0.0 title: Volume Count default: 0 cloud_provider_count: type: integer minimum: 0.0 title: Cloud Provider Count default: 0 share_count: type: integer minimum: 0.0 title: Share Count default: 0 file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Sum of reported per-volume file counts. Volumes without a NOC count are excluded; null when no volume has reported a count. queued_deletion_time: anyOf: - type: string format: date-time - type: 'null' title: Queued Deletion Time description: Instant the repository is permanently deleted once its soft-delete window elapses. Portal-computed; null unless a removal is pending; the client derives the countdown from it so the value never goes stale. volumes: items: $ref: '#/components/schemas/EnterpriseSearchRepositoryVolumeDto' type: array title: Volumes shares: items: $ref: '#/components/schemas/EnterpriseSearchShareDto' type: array title: Shares type: object required: - edge_id - edge_name - edge_description - edge_serial - status title: EnterpriseSearchRepositoryEdgeDto description: 'Response shape for the single-repository routes — the summary plus the per-volume indexes the appliance status is derived from, and the share roster the Configure page renders.' EnterpriseSearchRepositoryEdgeSummaryDto: properties: edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name edge_description: type: string title: Edge Description edge_serial: type: string title: Edge Serial status: $ref: '#/components/schemas/EnterpriseSearchRepositoryStatus' description: Search-index lifecycle state, overridden by the appliance's Portal-owned pause state. volume_count: type: integer minimum: 0.0 title: Volume Count default: 0 cloud_provider_count: type: integer minimum: 0.0 title: Cloud Provider Count default: 0 share_count: type: integer minimum: 0.0 title: Share Count default: 0 file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Sum of reported per-volume file counts. Volumes without a NOC count are excluded; null when no volume has reported a count. queued_deletion_time: anyOf: - type: string format: date-time - type: 'null' title: Queued Deletion Time description: Instant the repository is permanently deleted once its soft-delete window elapses. Portal-computed; null unless a removal is pending; the client derives the countdown from it so the value never goes stale. type: object required: - edge_id - edge_name - edge_description - edge_serial - status title: EnterpriseSearchRepositoryEdgeSummaryDto description: Response shape for GET /enterprise-search/repositories (list). EnterpriseSearchRepositoryRemovalCancelled: properties: action: type: string const: Enterprise Search Repository Removal Cancelled title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name type: object required: - action - edge_id - edge_name title: EnterpriseSearchRepositoryRemovalCancelled description: Resume of a soft delete — the appliance's search is reinstated before the removal window elapses. EnterpriseSearchRepositoryRemovalRequested: properties: action: type: string const: Enterprise Search Repository Removal Requested title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name soft_delete_datetime: anyOf: - type: string format: date-time - type: 'null' title: Soft Delete Datetime type: object required: - action - edge_id - edge_name title: EnterpriseSearchRepositoryRemovalRequested description: 'Soft delete — ``soft_delete_datetime`` is when the removal was queued, not when the index is actually torn down.' EnterpriseSearchRepositoryStatus: type: string enum: - Index Not Started - Indexing - Active - Paused - Index Failed - Index Expired - Removal Pending - Removed - Unknown title: EnterpriseSearchRepositoryStatus description: Lifecycle of an activated appliance search repository. EnterpriseSearchRepositoryUpdateRequestDto: properties: search_paused: type: boolean title: Search Paused queued_deletion_time: type: 'null' title: Queued Deletion Time description: Send null to cancel a pending removal (resume). Use DELETE to request one. additionalProperties: false type: object title: EnterpriseSearchRepositoryUpdateRequestDto EnterpriseSearchRepositoryUpdated: properties: action: type: string const: Enterprise Search Repository Updated title: Action edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name changes: anyOf: - additionalProperties: true type: object - type: 'null' title: Changes type: object required: - action - edge_id - edge_name title: EnterpriseSearchRepositoryUpdated EnterpriseSearchRepositoryVolumeDto: properties: volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: type: string title: Provider volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the volume. May be null when NOC has no volume metadata. file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Number of files indexed for the volume. May be null until NOC reports a count. volume_size: anyOf: - type: string - type: 'null' title: Volume Size description: Human-readable volume size string e.g. '10.5 TB'. May be unavailable until indexing progresses. share_count: type: integer minimum: 0.0 title: Share Count description: Number of Web Access enabled shares exposed for this volume by the repository appliance. default: 0 queued_deletion_time: anyOf: - type: string format: date-time - type: 'null' title: Queued Deletion Time description: Instant the repository is permanently deleted once its soft-delete window elapses. Portal-computed and shared by every volume; null unless a removal is pending. type: object required: - volume_guid - volume_name - provider title: EnterpriseSearchRepositoryVolumeDto description: One volume's index inside an appliance's search repository. EnterpriseSearchShareDto: properties: share_name: type: string title: Share Name path: type: string title: Path description: Path within the volume that the share exposes. volume_guid: type: string title: Volume Guid volume_name: type: string title: Volume Name provider: anyOf: - type: string - type: 'null' title: Provider volume_region: anyOf: - type: string - type: 'null' title: Volume Region description: Storage region of the share's volume, or null when none is on record. web_access_enabled: type: boolean title: Web Access Enabled description: The filer's Web Access toggle. Only enabled shares are indexed; disabled ones are reported so the UI can count them. file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Always null today. NOC reports inventory file counts per volume, not per share, so a per-share number cannot be sourced without splitting a volume's total across its shares. type: object required: - share_name - path - volume_guid - volume_name - provider - web_access_enabled title: EnterpriseSearchShareDto description: One SMB share an appliance exposes for a volume in its repository. EnterpriseSearchSummaryEdgeInventoryDto: properties: edge_id: type: string format: uuid title: Edge Id edge_name: type: string title: Edge Name edge_description: type: string title: Edge Description edge_serial: type: string title: Edge Serial days_until_expiry: anyOf: - type: integer - type: 'null' title: Days Until Expiry description: Days until the first volume on this edge expires. search_inventory_status: $ref: '#/components/schemas/EnterpriseSearchInventoryStatus' description: Derived from the aggregate status of the edge's volumes. volume_count: type: integer minimum: 0.0 title: Volume Count default: 0 cloud_provider_count: type: integer minimum: 0.0 title: Cloud Provider Count default: 0 share_count: type: integer minimum: 0.0 title: Share Count default: 0 file_count: anyOf: - type: integer minimum: 0.0 - type: 'null' title: File Count description: Sum of the reported per-volume file counts on this edge. Volumes whose count NOC has not reported yet are excluded, so this can undercount until every volume has data; null when no volume has reported a count. idle_removal_time: anyOf: - type: string format: date-time - type: 'null' title: Idle Removal Time type: object required: - edge_id - edge_name - edge_description - edge_serial - search_inventory_status title: EnterpriseSearchSummaryEdgeInventoryDto description: Response shape for GET /enterprise-search/inventories (list). EnterpriseSearchUpdateInventoryRequestDto: properties: {} additionalProperties: false type: object title: EnterpriseSearchUpdateInventoryRequestDto ErrorResponse: properties: message: type: string title: Message detail: anyOf: - {} - type: 'null' title: Detail type: object required: - message - detail title: ErrorResponse ErrorResponseBaseDto: properties: message: type: string title: Message type: object required: - message title: ErrorResponseBaseDto FailedUnreachableEdgeDto: properties: edge_id: type: string format: uuid title: Edge Id task_id: type: string format: uuid title: Task Id last_seen_at: anyOf: - type: string format: date-time - type: 'null' title: Last Seen At type: object required: - edge_id - task_id title: FailedUnreachableEdgeDto description: 'Per-appliance task row created in `failed` state up front because the appliance was unreachable at request time — surfaced to the user via the Acknowledge UX so they can dismiss it and retry once the filer is back.' FiqApplianceDto: properties: serial_number: type: string format: uuid title: Serial Number id: type: string format: uuid title: Id description: type: string title: Description build: type: string title: Build enabled: type: boolean title: Enabled connections: $ref: '#/components/schemas/FiqConnections' type: object required: - serial_number - id - description - build - enabled - connections title: FiqApplianceDto FiqApplianceUpdateDto: properties: enabled: anyOf: - type: boolean - type: 'null' title: Enabled type: object title: FiqApplianceUpdateDto FiqConfigUpdate: properties: action: type: string const: File IQ Config Updated title: Action old: anyOf: - $ref: '#/components/schemas/FiqApplianceDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/FiqApplianceDto' - type: 'null' type: object required: - action title: FiqConfigUpdate FiqConnections: properties: edges: items: $ref: '#/components/schemas/FiqEdgeDto' type: array title: Edges type: object required: - edges title: FiqConnections FiqEdgeDto: properties: serial_number: type: string format: uuid title: Serial Number id: type: string format: uuid title: Id build: type: string title: Build description: type: string title: Description fiq_service_enabled: type: boolean title: Fiq Service Enabled type: object required: - serial_number - id - build - description - fiq_service_enabled title: FiqEdgeDto FiqsDto: properties: items: items: $ref: '#/components/schemas/FiqApplianceDto' type: array title: Items type: object required: - items title: FiqsDto GCSCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: googles3 title: Cred Type default: googles3 type: object required: - name - username - secret - appliance_id title: GCSCredentialRequest GCSCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: googles3 title: Cred Type default: googles3 type: object required: - name - username - appliance_ids title: GCSCredentialUpdateRequest GfaApiKeyDto: properties: key: type: string format: uuid title: Key created: type: string format: date-time title: Created last_used: anyOf: - type: string format: date-time - type: 'null' title: Last Used type: object required: - key - created - last_used title: GfaApiKeyDto GfaApiKeysResponseDto: properties: items: items: $ref: '#/components/schemas/GfaApiKeyDto' type: array title: Items type: object required: - items title: GfaApiKeysResponseDto HCPCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: hcp title: Cred Type default: hcp type: object required: - name - username - secret - appliance_id title: HCPCredentialRequest HCPCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: hcp title: Cred Type default: hcp type: object required: - name - username - appliance_ids title: HCPCredentialUpdateRequest HTTPValidationError: properties: message: type: string title: Message detail: items: additionalProperties: true type: object type: array title: Detail example: - ctx: error: 'invalid length: expected length 32 for simple format, found 3' input: '123' loc: - path - id msg: 'Input should be a valid UUID, invalid length: expected length 32 for simple format, found 3' type: uuid_parsing type: object required: - message - detail title: ValidationErrorResponse HealthResponseDto: properties: healthy: type: boolean title: Healthy default: true type: object title: HealthResponseDto IBMCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: ibmcos title: Cred Type default: ibmcos type: object required: - name - username - secret - appliance_id title: IBMCredentialRequest IBMCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: ibmcos title: Cred Type default: ibmcos type: object required: - name - username - appliance_ids title: IBMCredentialUpdateRequest Key: properties: name: type: string title: Name access: type: string title: Access secret: type: string title: Secret type: object required: - name - access - secret title: Key KeyType: type: string enum: - service - user title: KeyType McpAuthorizeRequest: properties: request_id: type: string title: Request Id type: object required: - request_id title: McpAuthorizeRequest NacRunHistoryDto: properties: error_count: type: integer title: Error Count default: 0 run_id: type: string title: Run Id unifx_version: type: string title: Unifx Version start_timestamp: type: string format: date-time title: Start Timestamp destination_type: type: string title: Destination Type failed_file_count: type: integer title: Failed File Count default: 0 elapsed_time: type: integer title: Elapsed Time source_type: type: string title: Source Type exported_files: type: integer title: Exported Files average_throughput: type: integer title: Average Throughput end_time: type: integer title: End Time volume_name: type: string title: Volume Name percent_complete: type: integer title: Percent Complete exported_dirs: type: integer title: Exported Dirs volume_guid: type: string title: Volume Guid exported_bytes: type: integer title: Exported Bytes type: object required: - run_id - unifx_version - start_timestamp - destination_type - elapsed_time - source_type - exported_files - average_throughput - end_time - volume_name - percent_complete - exported_dirs - volume_guid - exported_bytes title: NacRunHistoryDto NdsVolumesResponseDto: properties: volumes: anyOf: - items: type: string type: array - type: 'null' title: Volumes type: object title: NdsVolumesResponseDto NfsStackType: type: string enum: - nfs-server - nfs-ganesha title: NfsStackType NocCloudProvider: type: string enum: - amazons3 - amazons3gov - azure - google - googles3 - atmos - ironmountain - rackspace - nirvanix - synaptic - castor - delldx - cloudone - hp - cleversafe - vipr - ibmcos - hcp - s3_compatible title: NocCloudProvider description: Cloud provider identity as used by NOC (shortname). NocCloudStorageProtocol: type: string enum: - amazons3 - amazons3gov - azure - ibmcos - hcp - vipr - cleversafe - googles3 - s3_compatible title: NocCloudStorageProtocol description: The underlying storage API/protocol (maps to 'type' in NOC response). NocCloudVendor: type: string enum: - customer - private - nasuni title: NocCloudVendor description: Who provisions the cloud infrastructure. NocInventoryServiceStatus: type: string enum: - Not Connected - Active - Disabled - Expired - Removal Pending - Removed title: NocInventoryServiceStatus NocStackCloudProvider: type: string enum: - aws - azure title: NocStackCloudProvider NocUaasLogLevel: type: string enum: - DEBUG - INFO - WARNING - ERROR - CRITICAL title: NocUaasLogLevel NotificationCategory: type: string enum: - Snapshots & Sync - Restore & Recovery - Cyber Resilience - Encryption Keys - Volume Management - Cloud & Credentials - Remote Access & GFL - Hardware - Network - System Health & Performance - Cache Management - Software & Firmware Updates - Licensing - Directory Services - Appliance Lifecycle - Security & Access - File IQ & Auditing title: NotificationCategory NotificationColumns: type: string enum: - generated_at - severity - category - appliance_name - volume_name title: NotificationColumns NotificationDto: properties: id: type: string format: uuid title: Id account_id: type: string format: uuid title: Account Id severity: $ref: '#/components/schemas/NotificationSeverity' category: anyOf: - $ref: '#/components/schemas/NotificationCategory' - type: 'null' code_name: type: string title: Code Name message: type: string title: Message source: anyOf: - $ref: '#/components/schemas/NotificationOriginType' - type: 'null' created_at: type: string format: date-time title: Created At generated_at: type: string format: date-time title: Generated At sub_category: anyOf: - $ref: '#/components/schemas/NotificationSubCategory' - type: 'null' appliance_name: anyOf: - type: string - type: 'null' title: Appliance Name appliance_serial: anyOf: - type: string format: uuid - type: 'null' title: Appliance Serial volume_name: anyOf: - type: string - type: 'null' title: Volume Name volume_id: anyOf: - type: string - type: 'null' title: Volume Id arguments: anyOf: - additionalProperties: true type: object - type: 'null' title: Arguments linked_doc: anyOf: - type: string - type: 'null' title: Linked Doc type: object required: - id - account_id - severity - code_name - message - created_at - generated_at title: NotificationDto description: Single Notification DTO NotificationOriginType: type: string enum: - SYSTEM_GENERATED - CUSTOMER_DEFINED title: NotificationOriginType NotificationPaginationMetadataDto: properties: iterator_id: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id description: Iterator ID for loading more results (null if no more) page_size: type: integer title: Page Size description: Number of items returned default: 50 total_pages: anyOf: - type: integer - type: 'null' title: Total Pages total_items: type: integer title: Total Items page: anyOf: - type: integer - type: 'null' title: Page type: object required: - total_items title: NotificationPaginationMetadataDto NotificationSeverity: type: string enum: - ALERT - ERROR - WARNING - INFO - ADMIN title: NotificationSeverity NotificationSortDirection: type: string enum: - asc - desc title: NotificationSortDirection NotificationSubCategory: type: string enum: - Snapshot - Sync - Snapshot Retention - Success - Errors - User Actions - Disaster Recovery - Ransomware - Antivirus - Escrow - Generation - Account - Remote Access - Backup - Delete - Safe Delete - UniFSCK - Multiprotocol - Sharing - GFL - Lock Arbiter - GFA - RAID - Encryption - Exception - Firmware - UPS - Unreachable - Configuration - Health Monitor - NOC - Limits - Resources - Cache Disk - Metrics - Config Backup - Unsupported - OS Disk - Time - Resize - Eviction - Autocache - Pinning - Sideload - Power - New - Offline - NMC - SSO - SSL Certificates - EULA - Remote Support - File IQ - AMQP - Syslog title: NotificationSubCategory NotificationsDto: properties: items: items: $ref: '#/components/schemas/NotificationDto' type: array title: Items metadata: $ref: '#/components/schemas/NotificationPaginationMetadataDto' type: object required: - metadata title: NotificationsDto description: 'Forward-only cursor-based pagination for infinite scroll UX Designed for "Load more" pattern - no backward navigation, no page numbers. UI shows: "Showing latest X notifications" with "Load more" button.' OptionsResponseDto: properties: versions: items: type: string type: array title: Versions default: type: string title: Default default: v1 type: object title: OptionsResponseDto PaginatedCollectionMetadataDto: properties: iterator_id: anyOf: - type: string format: uuid - type: 'null' title: Iterator Id description: The iterator ID to use when querying the next page of results page: type: integer title: Page default: 1 page_size: anyOf: - type: integer - type: 'null' title: Page Size total_pages: anyOf: - type: integer - type: 'null' title: Total Pages total_items: type: integer title: Total Items type: object required: - iterator_id - total_items title: PaginatedCollectionMetadataDto PerformanceSummaryDto: properties: cpu: anyOf: - type: number - type: 'null' title: Cpu memory: anyOf: - type: number - type: 'null' title: Memory cache: anyOf: - type: number - type: 'null' title: Cache type: object required: - cpu - memory - cache title: PerformanceSummaryDto description: Current CPU, memory, and cache utilization for an appliance. PermissionDto: properties: id: type: string format: uuid title: Id key: $ref: '#/components/schemas/PermissionKey' description: type: string title: Description type: object required: - id - key - description title: PermissionDto PermissionKey: type: string enum: - View Appliances - Edit Appliance Details - Configure FIQ Service - View Edge S3 Edge Service - Configure Edge S3 Edge Service - View FIQ Appliances - Configure FIQ Appliances - View UaaS Stacks - Edit UaaS Stacks - View SRaaS - View NDS Setup - Edit NDS Setup - View NDS Access Keys - Edit NDS Access Keys - Generate NDS Shared Access Signature (SAS) - View Service API Keys - Create Service API Keys - Edit Service API Keys - Delete Service API Keys - View User API Keys - Create User API Keys - Delete User API Keys - Manage Own User API Keys - View Account Info - Edit Account Info - Manage Licenses - View Analytics Connector - Edit Analytics Connector - Create Analytics Connector - View Activity Logs - View Appliance Installs - Download Appliance Software - Create GFA Keys - View GFA Keys - Delete GFA Keys - View Active Portal Users - View Roles and Permissions - Delete Roles - Edit Roles - Create Roles - View S3 Edge Configuration - Edit S3 Edge Configuration - Delete S3 Edge Configuration - View Serial Numbers - View Serial Auth Codes - Decommission Appliances - Perform Disaster Recovery - View SSO Configuration - Edit SSO Configuration - View Web Access SSO Configuration - Edit Web Access SSO Configuration - View Ops IQ Appliance Dashboard - View Ops IQ Volume Dashboard - Install New Appliances - Manage MFA Configuration - View Volume Info - Manage Snapshot - Manage Volumes - View Volume Connections - Manage Volume Connections - View Notifications - View Appliance Support Settings - View Portal Support Session - Manage Portal Support Session - Configure Appliance Remote Support - Send Appliance Diagnostics - View AI Activate Indexes - Edit AI Activate Indexes - View AI Activate Consumption - View AI Activate MCP Server - Edit AI Activate MCP Server - View AI Activate Remote Support - Edit AI Activate Remote Support - View Cloud Credentials - Create / Edit Cloud Credentials - Delete Cloud Credentials - View Search Configurations - Manage Search Configuration - Delete Search Configuration - View Search Consumption - View Search Remote Support - Edit Search Remote Support - View Volume Encryption Keys - Manage Volume Encryption Keys - Disable Encryption Keys - Delete Unused Keys - Download Generated Keys - View Backup Keys - Manage Backup Keys - View Key Escrow - Escrow Keys - View Escrow Passphrase - Manage Escrow Passphrase title: PermissionKey description: 'Enum representing all possible permission keys for the Portal API, including NDS (Nasuni Data Service) permissions. This enum is used to define and manage access control for various features and operations within the Portal API, including appliance management, authentication, account operations, analytics, activity logs, downloads, GFA, IAM, S3 Edge, serials, SSO, Ops IQ, and UI features.' PermissionPolicy: type: string enum: - POSIX Mixed Mode - UNIX/NFS Permissions Only Mode - Unauthenticated Access Mode - NTFS Compatible Mode - NTFS Exclusive Mode - NTFS Multiprotocol Mode title: PermissionPolicy PermissionsDto: properties: items: items: $ref: '#/components/schemas/PermissionDto' type: array title: Items type: object title: PermissionsDto PortalRemoteAccessDisabled: properties: action: type: string const: Portal Remote Access Disabled title: Action old: anyOf: - $ref: '#/components/schemas/PortalSupportConfigurationResponseDto' - type: 'null' type: object required: - action title: PortalRemoteAccessDisabled PortalRemoteAccessEnabled: properties: action: type: string const: Portal Remote Access Enabled title: Action old: anyOf: - $ref: '#/components/schemas/PortalSupportConfigurationResponseDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/PortalSupportConfigurationResponseDto' - type: 'null' type: object required: - action title: PortalRemoteAccessEnabled PortalSupportConfigurationRequestDto: properties: enabled: type: boolean title: Enabled duration_hours: anyOf: - type: integer maximum: 8760.0 minimum: 1.0 - type: 'null' title: Duration Hours type: object required: - enabled title: PortalSupportConfigurationRequestDto description: 'Request body for POST /configuration/support/portal. Enable: { "enabled": true, "duration_hours": 8 } # timed Enable: { "enabled": true } # always_on (no expiry) Disable: { "enabled": false }' PortalSupportConfigurationResponseDto: properties: enabled: type: boolean title: Enabled expires_at: anyOf: - type: string format: date-time - type: 'null' title: Expires At duration_hours: anyOf: - type: integer - type: 'null' title: Duration Hours type: object required: - enabled title: PortalSupportConfigurationResponseDto description: Response body for POST /configuration/support/portal. PortalSupportStatusDto: properties: enabled: type: boolean title: Enabled duration_hours: anyOf: - type: integer - type: 'null' title: Duration Hours expires_at: anyOf: - type: string format: date-time - type: 'null' title: Expires At support_connected: type: boolean title: Support Connected type: object required: - enabled - duration_hours - expires_at - support_connected title: PortalSupportStatusDto description: Status snapshot of portal remote-support access for the caller's account. Protocol: type: string enum: - NFS - SMB - FTP title: Protocol RoleDto: properties: id: type: string format: uuid title: Id created: type: string format: date-time title: Created last_updated: type: string format: date-time title: Last Updated name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names default: [] editable: type: boolean title: Editable default: true deletable: type: boolean title: Deletable default: true permissions: items: type: string format: uuid type: array title: Permissions type: object required: - id - created - last_updated - name - permissions title: RoleDto RoleUpdated: properties: action: type: string const: Role Updated title: Action old: anyOf: - $ref: '#/components/schemas/ActivityLogsRoleDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/ActivityLogsRoleDto' - type: 'null' item: anyOf: - $ref: '#/components/schemas/ActivityLogsRoleDto' - type: 'null' type: object required: - action title: RoleUpdated RolesAndPermissionsDto: properties: roles: items: $ref: '#/components/schemas/RoleDto' type: array title: Roles permissions: items: $ref: '#/components/schemas/PermissionDto' type: array title: Permissions is_sso_configured: type: boolean title: Is Sso Configured default: false type: object title: RolesAndPermissionsDto RolesDto: properties: items: items: $ref: '#/components/schemas/BaseRoleDto' type: array title: Items type: object required: - items title: RolesDto S3CompatibleCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: s3_compatible title: Cred Type default: s3_compatible region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - secret - appliance_id title: S3CompatibleCredentialRequest S3CompatibleCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: s3_compatible title: Cred Type default: s3_compatible region_code: anyOf: - type: string - type: 'null' title: Region Code skip_validation: type: boolean title: Skip Validation default: false type: object required: - name - username - appliance_ids title: S3CompatibleCredentialUpdateRequest S3EdgeConfigDto: properties: buckets: items: anyOf: - $ref: '#/components/schemas/Bucket' - $ref: '#/components/schemas/BucketSDDL' type: array title: Buckets keys: items: $ref: '#/components/schemas/Key' type: array title: Keys type: object required: - buckets - keys title: S3EdgeConfigDto S3EdgeConfigResponseDto: properties: buckets: items: anyOf: - $ref: '#/components/schemas/Bucket' - $ref: '#/components/schemas/BucketSDDL' type: array title: Buckets keys: anyOf: - items: $ref: '#/components/schemas/Key' type: array - type: 'null' title: Keys description: Omitted without S3 configuration view permission. type: object required: - buckets title: S3EdgeConfigResponseDto S3EdgeConfigUpdate: properties: action: type: string const: S3 Edge Config Updated title: Action old: anyOf: - $ref: '#/components/schemas/S3EdgeConfigDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/S3EdgeConfigDto' - type: 'null' type: object required: - action title: S3EdgeConfigUpdate SSOConfigDto: properties: provider: type: string title: Provider name: type: string maxLength: 40 title: Name client_id: type: string maxLength: 191 title: Client Id secret: type: string format: password title: Secret writeOnly: true key: type: string maxLength: 191 title: Key type: object required: - provider - name - client_id - secret - key title: SSOConfigDto SSOConfigUpdate: properties: action: type: string const: SSO Config Updated title: Action old: anyOf: - $ref: '#/components/schemas/SSOConfigDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/SSOConfigDto' - type: 'null' type: object required: - action title: SSOConfigUpdate SSOConfigUpdateResponseDto: properties: provider: type: string title: Provider name: type: string maxLength: 40 title: Name client_id: type: string maxLength: 191 title: Client Id secret: type: string format: password title: Secret writeOnly: true key: type: string maxLength: 191 title: Key verification_url: anyOf: - type: string - type: 'null' title: Verification Url type: object required: - provider - name - client_id - secret - key - verification_url title: SSOConfigUpdateResponseDto SecurityMode: type: string enum: - Publicly Available - Active Directory - LDAP Directory title: SecurityMode SendDiagnosticsRequestDto: properties: appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids type: object required: - appliance_ids title: SendDiagnosticsRequestDto description: POST request body for the diagnostics endpoint. SendDiagnosticsResponseDto: properties: accepted: type: integer title: Accepted tasks: items: $ref: '#/components/schemas/ApplianceTaskDispatchDto' type: array title: Tasks failed: items: type: string format: uuid type: array title: Failed server_time: type: string format: date-time title: Server Time type: object required: - accepted - server_time title: SendDiagnosticsResponseDto description: Dispatch acknowledgement. Diagnostics have been queued, not run. SerialDto: properties: id: type: string format: uuid title: Id type: type: string enum: - edge - nmc - file_iq - naa - uaas title: Type in_use: type: boolean title: In Use default: false description: anyOf: - type: string - type: 'null' title: Description build: anyOf: - type: string - type: 'null' title: Build available_build: anyOf: - type: string - type: 'null' title: Available Build users: anyOf: - type: integer - type: 'null' title: Users fqdns: anyOf: - items: type: string type: array - type: 'null' title: Fqdns last_config_backup_date: anyOf: - type: string - type: 'null' title: Last Config Backup Date type: object required: - id - type title: SerialDto SerialPatchErrorResponseDto: properties: eligible: type: boolean title: Eligible owned_volumes: type: integer title: Owned Volumes remotely_connected_volumes: type: integer title: Remotely Connected Volumes message: type: string title: Message type: object required: - eligible - owned_volumes - remotely_connected_volumes - message title: SerialPatchErrorResponseDto SerialPatchRequestDto: properties: decommission: type: boolean title: Decommission default: false type: object title: SerialPatchRequestDto SerialsDto: properties: items: items: $ref: '#/components/schemas/SerialDto' type: array title: Items type: object title: SerialsDto ServiceKeyDto: properties: id: type: string format: uuid title: Id name: type: string title: Name key: type: string title: Key roles: items: type: string format: uuid type: array title: Roles date_created: type: string format: date-time title: Date Created last_accessed: type: string format: date-time title: Last Accessed type: object required: - id - name - key - roles - date_created - last_accessed title: ServiceKeyDto ServiceKeyRole: properties: action: type: string enum: - Service Key Role Added - Service Key Role Removed title: Action id: type: string format: uuid title: Id role_id: type: string format: uuid title: Role Id role_name: type: string title: Role Name type: object required: - action - id - role_id - role_name title: ServiceKeyRole ServiceKeysDto: properties: items: items: $ref: '#/components/schemas/ServiceKeyDto' type: array title: Items type: object required: - items title: ServiceKeysDto SimpleEdgeDto: properties: id: type: string format: uuid title: Id description: type: string title: Description type: $ref: '#/components/schemas/EdgeType' default: Edge services: $ref: '#/components/schemas/EdgeServicesDto' serial: type: string format: uuid title: Serial instance_id: anyOf: - type: string format: uuid - type: 'null' title: Instance Id synced: type: boolean title: Synced default: false is_reachable: type: boolean title: Is Reachable default: false last_seen_at: anyOf: - type: string format: date-time - type: 'null' title: Last Seen At build: type: string title: Build ds_type: anyOf: - type: string - type: 'null' title: Ds Type product: anyOf: - type: string - type: 'null' title: Product allow_ntfs_multiprotocol: anyOf: - type: boolean - type: 'null' title: Allow Ntfs Multiprotocol nfs_stack_type: anyOf: - $ref: '#/components/schemas/NfsStackType' - type: 'null' max_volumes: anyOf: - type: integer - type: 'null' title: Max Volumes owned_volumes: anyOf: - type: integer - type: 'null' title: Owned Volumes ad_unix_extensions: anyOf: - type: boolean - type: 'null' title: Ad Unix Extensions type: object required: - id - description - serial - build title: SimpleEdgeDto SnapshotEvent: properties: action: type: string enum: - Snapshot Started - Snapshot Cancelled title: Action volume_id: type: string title: Volume Id volume_name: anyOf: - type: string - type: 'null' title: Volume Name edge_id: type: string format: uuid title: Edge Id task_id: anyOf: - type: string format: uuid - type: 'null' title: Task Id type: object required: - action - volume_id - edge_id title: SnapshotEvent SnapshotStatus: type: string enum: - idle - pending - in_progress - succeeded - failed - cancelling - cancelled - cancel_rejected - up_to_date title: SnapshotStatus description: 'Public snapshot lifecycle vocabulary surfaced by the snapshot APIs. The persisted column (``VolumeEdgeState.current_snapshot_status``) has a single writer: the EventHub ``VolumeSnapshotStatusProcessor``, which translates filer ``volume_snapshot_status`` events. No other code path — API request handlers, heartbeat upserts, background services — writes to that column. ``cancelling`` never reaches the DB: it exists as a FE-optimistic wire value only (clients render it between the cancel dispatch and the filer''s ``cancelled`` / ``cancel_rejected`` ack). ``pending`` is a real filer-reported state.' SnapshotStatusResponseDto: properties: volume_id: type: string title: Volume Id edge_id: type: string format: uuid title: Edge Id current_snapshot_status: $ref: '#/components/schemas/SnapshotStatus' default: idle type: object required: - volume_id - edge_id title: SnapshotStatusResponseDto description: 'Per-edge snapshot status — ``VolumeEdgeState.current_snapshot_status`` for a single ``(volume_id, edge_id)``. Defaults to ``idle`` when no state row exists (no UI difference).' SoftwareDownloadConfigurationUpdate: properties: action: type: string const: Software Download Configuration Updated title: Action old: $ref: '#/components/schemas/SoftwareDownloadsConfigurationDto' new: $ref: '#/components/schemas/SoftwareDownloadsConfigurationDto' type: object required: - action - old - new title: SoftwareDownloadConfigurationUpdate SoftwareDownloadsConfigurationDto: properties: linked_amazon_account_ids: items: type: string type: array title: Linked Amazon Account Ids type: object title: SoftwareDownloadsConfigurationDto SortDirection: type: string enum: - ascending - descending title: SortDirection SortOrder: type: string enum: - asc - desc title: SortOrder description: Short-form sort direction used by list APIs (asc/desc). StackConfigUpdate: properties: action: type: string const: Stack Configuration Updated title: Action old: anyOf: - $ref: '#/components/schemas/UaasStackDetailDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/UaasStackDetailDto' - type: 'null' type: object required: - action title: StackConfigUpdate StackNDSConfigUpdate: properties: action: type: string const: Stack NDS Configuration Updated title: Action old: anyOf: - $ref: '#/components/schemas/UaasStackNdsSimplifiedDto' - $ref: '#/components/schemas/UaasStackNdsConfigDto' - type: 'null' title: Old new: anyOf: - $ref: '#/components/schemas/UaasStackNdsSimplifiedDto' - $ref: '#/components/schemas/UaasStackNdsConfigDto' - type: 'null' title: New type: object required: - action title: StackNDSConfigUpdate StackVolumeAdded: properties: action: type: string const: Stack Volume Added title: Action volume_id: type: string title: Volume Id new: anyOf: - $ref: '#/components/schemas/UaasVolumeNdsDto' - type: 'null' type: object required: - action - volume_id title: StackVolumeAdded StackVolumeRemovalRequested: properties: action: type: string const: Stack Volume Removal Requested title: Action volume_id: type: string title: Volume Id old: anyOf: - $ref: '#/components/schemas/UaasVolumeNdsDto' - type: 'null' type: object required: - action - volume_id title: StackVolumeRemovalRequested StackVolumeRemoved: properties: action: type: string const: Stack Volume Removed title: Action volume_id: type: string title: Volume Id old: anyOf: - $ref: '#/components/schemas/UaasVolumeNdsDto' - type: 'null' type: object required: - action - volume_id title: StackVolumeRemoved StackVolumeUpdated: properties: action: type: string const: Stack Volume Updated title: Action volume_id: type: string title: Volume Id old: anyOf: - $ref: '#/components/schemas/UaasVolumeNdsDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/UaasVolumeNdsDto' - type: 'null' type: object required: - action - volume_id title: StackVolumeUpdated SupportSessionState: type: string enum: - inactive - active - expired title: SupportSessionState description: Per-appliance support session state. Derived at query time, never stored. TaskCreatedDto: properties: id: type: string format: uuid title: Id state: $ref: '#/components/schemas/TaskState' type: object required: - id - state title: TaskCreatedDto description: Minimal task response returned when an async operation is accepted (HTTP 202). TaskDto: properties: id: type: string format: uuid title: Id created_at: type: string format: date-time title: Created At resource: type: string title: Resource resource_id: anyOf: - type: string format: uuid - type: string - type: 'null' title: Resource Id stack_id: anyOf: - type: string format: uuid - type: 'null' title: Stack Id action: type: string title: Action executor: $ref: '#/components/schemas/TaskExecutor' executor_id: anyOf: - type: string format: uuid - type: 'null' title: Executor Id initiated_by: $ref: '#/components/schemas/TaskInitiator' initiator_id: anyOf: - type: string format: uuid - type: 'null' title: Initiator Id activity_log_id: anyOf: - type: string format: uuid - type: 'null' title: Activity Log Id reason: anyOf: - type: string - type: 'null' title: Reason state: $ref: '#/components/schemas/TaskState' last_updated_at: type: string format: date-time title: Last Updated At user_acknowledged_at: anyOf: - type: string format: date-time - type: 'null' title: User Acknowledged At deletion_time: anyOf: - type: string format: date-time - type: 'null' title: Deletion Time steps: items: $ref: '#/components/schemas/TaskStepDto' type: array title: Steps default: [] auth_context: anyOf: - additionalProperties: true type: object - type: 'null' title: Auth Context type: object required: - id - created_at - resource - action - executor - initiated_by - state - last_updated_at title: TaskDto description: 'Full/internal task view: the customer summary plus internal steps and captured auth context. Produced by the repo/converters and consumed across the backend. It must not cross the customer boundary as-is — the task routes serialize the `TaskSummaryDto` subset instead. `auth_context` is the serialized `AuthContext` (key / user / roles / source_ip) captured at task creation; event processors re-seed it so audit logs are attributed to the originating caller rather than the eventhub Lambda identity. Internal-only by design — never include it on a customer-facing DTO.' TaskExecutor: type: string enum: - edge title: TaskExecutor TaskInitiator: type: string enum: - portal - edge title: TaskInitiator TaskResource: type: string enum: - edge - volume - cloud_credential - appliance_support title: TaskResource TaskState: type: string enum: - in_progress - completed - failed title: TaskState TaskStateSummaryDto: properties: id: type: string format: uuid title: Id created_at: type: string format: date-time title: Created At resource: type: string title: Resource resource_id: anyOf: - type: string format: uuid - type: string - type: 'null' title: Resource Id action: type: string title: Action executor_id: anyOf: - type: string format: uuid - type: 'null' title: Executor Id state: $ref: '#/components/schemas/TaskState' type: object required: - id - created_at - resource - action - state title: TaskStateSummaryDto description: Task fields used when a BFF embeds task state in a resource response. TaskStepDto: properties: name: type: string title: Name state: $ref: '#/components/schemas/TaskStepState' reason: anyOf: - type: string - type: 'null' title: Reason created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - name - state - created_at - updated_at title: TaskStepDto TaskStepState: type: string enum: - pending - in_progress - completed - failed title: TaskStepState TaskSummaryDto: properties: id: type: string format: uuid title: Id created_at: type: string format: date-time title: Created At resource: type: string title: Resource resource_id: anyOf: - type: string format: uuid - type: string - type: 'null' title: Resource Id stack_id: anyOf: - type: string format: uuid - type: 'null' title: Stack Id action: type: string title: Action executor: $ref: '#/components/schemas/TaskExecutor' executor_id: anyOf: - type: string format: uuid - type: 'null' title: Executor Id initiated_by: $ref: '#/components/schemas/TaskInitiator' initiator_id: anyOf: - type: string format: uuid - type: 'null' title: Initiator Id activity_log_id: anyOf: - type: string format: uuid - type: 'null' title: Activity Log Id reason: anyOf: - type: string - type: 'null' title: Reason state: $ref: '#/components/schemas/TaskState' last_updated_at: type: string format: date-time title: Last Updated At user_acknowledged_at: anyOf: - type: string format: date-time - type: 'null' title: User Acknowledged At deletion_time: anyOf: - type: string format: date-time - type: 'null' title: Deletion Time type: object required: - id - created_at - resource - action - executor - initiated_by - state - last_updated_at title: TaskSummaryDto description: 'Customer-facing task view: the rolled-up task `state` plus an optional, curated task-level `reason`. Deliberately carries no `steps`. Internal step `reason`s — unstructured, engineering-facing strings (often raw exception detail) — stay in the backend and never ride on this DTO. The task-level `reason` is a separate, customer-safe contract persisted when the task becomes failed. It is never derived from internal step reasons while serving a customer request.' TasksSummaryDto: properties: items: items: $ref: '#/components/schemas/TaskSummaryDto' type: array title: Items type: object required: - items title: TasksSummaryDto TokenRequestDto: properties: token: type: string title: Token type: object required: - token title: TokenRequestDto TokensDto: properties: access_token: type: string title: Access Token refresh_token: type: string title: Refresh Token token_type: type: string title: Token Type default: bearer expires_in: anyOf: - type: integer - type: 'null' title: Expires In type: object required: - access_token - refresh_token title: TokensDto UaasBlobAccessKeyBaseDto: properties: access_key: type: string format: password title: Access Key writeOnly: true generated: anyOf: - type: string format: date-time - type: 'null' title: Generated type: object required: - access_key title: UaasBlobAccessKeyBaseDto UaasBlobAccessKeyDto: properties: access_key: type: string format: password title: Access Key writeOnly: true generated: anyOf: - type: string format: date-time - type: 'null' title: Generated id: type: string format: uuid title: Id connection_string: type: string title: Connection String type: object required: - access_key - id - connection_string title: UaasBlobAccessKeyDto description: DTO for Azure Blob Access Keys used in UaaS stacks UaasBlobAccessKeyRevealedDto: properties: access_key: type: string format: password title: Access Key writeOnly: true generated: anyOf: - type: string format: date-time - type: 'null' title: Generated id: type: string format: uuid title: Id connection_string: type: string title: Connection String type: object required: - access_key - id - connection_string title: UaasBlobAccessKeyRevealedDto UaasBlobAccessKeysDto: properties: items: items: anyOf: - $ref: '#/components/schemas/UaasBlobAccessKeyRevealedDto' - $ref: '#/components/schemas/UaasBlobAccessKeyDto' type: array title: Items type: object required: - items title: UaasBlobAccessKeysDto UaasRunMetricDto: properties: volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name start_time: type: string format: date-time title: Start Time end_time: type: string format: date-time title: End Time error_count: type: integer title: Error Count objects_deleted: type: integer title: Objects Deleted bytes_deleted: type: integer title: Bytes Deleted type: object required: - volume_id - volume_name - start_time - end_time - error_count - objects_deleted - bytes_deleted title: UaasRunMetricDto UaasS3ConfigDto: properties: aws_enabled: anyOf: - type: boolean - type: 'null' title: Aws Enabled aws_volumes: anyOf: - items: type: string type: array - type: 'null' title: Aws Volumes type: object title: UaasS3ConfigDto UaasS3ConfigRevealedDto: properties: aws_enabled: anyOf: - type: boolean - type: 'null' title: Aws Enabled aws_volumes: anyOf: - items: type: string type: array - type: 'null' title: Aws Volumes keys: anyOf: - items: additionalProperties: type: string format: password writeOnly: true type: object type: array - type: 'null' title: Keys type: object title: UaasS3ConfigRevealedDto UaasSasTokenPermissionType: type: string enum: - read_volume - list_volume title: UaasSasTokenPermissionType UaasSasTokenRequestDto: properties: selected_key: type: string format: uuid title: Selected Key permissions: additionalProperties: type: boolean propertyNames: $ref: '#/components/schemas/UaasSasTokenPermissionType' type: object title: Permissions default: read_volume: true list_volume: true start_date: type: string format: date-time title: Start Date end_date: type: string format: date-time title: End Date type: object required: - selected_key - start_date - end_date title: UaasSasTokenRequestDto UaasSasTokenResponseDto: properties: sas_token: type: string title: Sas Token connection_string: type: string title: Connection String type: object required: - sas_token - connection_string title: UaasSasTokenResponseDto UaasStackBaseDto: properties: id: type: string format: uuid title: Id serial_number: type: string format: uuid title: Serial Number name: type: string title: Name build: anyOf: - type: string - type: 'null' title: Build uaas_build: anyOf: - type: string - type: 'null' title: Uaas Build cloud_provider: $ref: '#/components/schemas/NocStackCloudProvider' region: type: string title: Region created_date: type: string format: date-time title: Created Date last_used_date: anyOf: - type: string format: date-time - type: 'null' title: Last Used Date uaas_api_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Uaas Api Url blob_endpoint_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Blob Endpoint Url s3_obj_lambda_buckets: anyOf: - additionalProperties: type: string type: object - type: 'null' title: S3 Obj Lambda Buckets type: object required: - id - serial_number - name - cloud_provider - region - created_date title: UaasStackBaseDto UaasStackDetailDto: properties: id: type: string format: uuid title: Id serial_number: type: string format: uuid title: Serial Number name: type: string title: Name build: anyOf: - type: string - type: 'null' title: Build uaas_build: anyOf: - type: string - type: 'null' title: Uaas Build cloud_provider: $ref: '#/components/schemas/NocStackCloudProvider' region: type: string title: Region created_date: type: string format: date-time title: Created Date last_used_date: anyOf: - type: string format: date-time - type: 'null' title: Last Used Date uaas_api_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Uaas Api Url blob_endpoint_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Blob Endpoint Url s3_obj_lambda_buckets: anyOf: - additionalProperties: type: string type: object - type: 'null' title: S3 Obj Lambda Buckets log_level: anyOf: - $ref: '#/components/schemas/NocUaasLogLevel' - type: 'null' log_retention: anyOf: - type: integer - type: 'null' title: Log Retention remote_support_enabled: anyOf: - type: boolean - type: 'null' title: Remote Support Enabled volume_refresh_interval: anyOf: - type: integer - type: 'null' title: Volume Refresh Interval type: object required: - id - serial_number - name - cloud_provider - region - created_date title: UaasStackDetailDto UaasStackNdsConfigDto: properties: enabled: anyOf: - type: boolean - type: 'null' title: Enabled azure_keys: anyOf: - items: anyOf: - $ref: '#/components/schemas/UaasBlobAccessKeyDto' - $ref: '#/components/schemas/UaasBlobAccessKeyRevealedDto' type: array - type: 'null' title: Azure Keys type: object title: UaasStackNdsConfigDto description: Response DTO for NDS config endpoint — only config-level fields. UaasStackNdsDto: properties: azure_enabled: anyOf: - type: boolean - type: 'null' title: Azure Enabled s3: anyOf: - $ref: '#/components/schemas/UaasS3ConfigDto' - $ref: '#/components/schemas/UaasS3ConfigRevealedDto' - type: 'null' title: S3 azure_keys: anyOf: - items: anyOf: - $ref: '#/components/schemas/UaasBlobAccessKeyDto' - $ref: '#/components/schemas/UaasBlobAccessKeyRevealedDto' type: array - type: 'null' title: Azure Keys excluded_paths: anyOf: - additionalProperties: type: string type: object - type: 'null' title: Excluded Paths included_paths: anyOf: - additionalProperties: type: string type: object - type: 'null' title: Included Paths azure_volumes: anyOf: - items: type: string type: array - type: 'null' title: Azure Volumes type: object title: UaasStackNdsDto UaasStackNdsSimplifiedDto: properties: azure_enabled: anyOf: - type: boolean - type: 'null' title: Azure Enabled s3: anyOf: - $ref: '#/components/schemas/UaasS3ConfigDto' - $ref: '#/components/schemas/UaasS3ConfigRevealedDto' - type: 'null' title: S3 azure_keys: anyOf: - items: $ref: '#/components/schemas/UaasBlobAccessKeyBaseDto' type: array - type: 'null' title: Azure Keys excluded_paths: anyOf: - additionalProperties: type: string type: object - type: 'null' title: Excluded Paths included_paths: anyOf: - additionalProperties: type: string type: object - type: 'null' title: Included Paths azure_volumes: anyOf: - items: type: string type: array - type: 'null' title: Azure Volumes type: object title: UaasStackNdsSimplifiedDto UaasStackSraasDto: properties: enabled: type: boolean title: Enabled runs: items: $ref: '#/components/schemas/UaasRunMetricDto' type: array title: Runs type: object required: - enabled - runs title: UaasStackSraasDto UaasStackUpdateDetailDto: properties: log_level: anyOf: - $ref: '#/components/schemas/NocUaasLogLevel' - type: 'null' log_retention: anyOf: - type: integer - type: 'null' title: Log Retention remote_support_enabled: anyOf: - type: boolean - type: 'null' title: Remote Support Enabled volume_refresh_interval: anyOf: - type: integer - type: 'null' title: Volume Refresh Interval type: object title: UaasStackUpdateDetailDto UaasStacksDto: properties: items: items: $ref: '#/components/schemas/UaasStackBaseDto' type: array title: Items type: object required: - items title: UaasStacksDto UaasUpdateNdsConfigDto: properties: enabled: anyOf: - type: boolean - type: 'null' title: Enabled azure_keys: anyOf: - items: anyOf: - type: string format: password writeOnly: true - type: 'null' type: array - type: 'null' title: Azure Keys type: object title: UaasUpdateNdsConfigDto UaasVolumeNdsDto: properties: nds: anyOf: - type: boolean - type: 'null' title: Nds nds_excluded_paths: anyOf: - type: string - type: 'null' title: Nds Excluded Paths nds_included_paths: anyOf: - type: string - type: 'null' title: Nds Included Paths type: object title: UaasVolumeNdsDto UpdateAccountInformationDto: properties: first_name: type: string title: First Name last_name: type: string title: Last Name company: type: string title: Company phone: type: string title: Phone type: object required: - first_name - last_name - company - phone title: UpdateAccountInformationDto description: Request model for account information change for WebApi route /account UpdateEdgeDescriptionDto: properties: description: type: string maxLength: 140 minLength: 1 title: Description type: object required: - description title: UpdateEdgeDescriptionDto UpdateEdgeFiqServiceDto: properties: enabled: type: boolean title: Enabled default: false connected_file_iq_serial: anyOf: - type: string format: uuid - type: 'null' title: Connected File Iq Serial type: object title: UpdateEdgeFiqServiceDto UpdateRoleDto: properties: name: type: string title: Name sso_group_names: items: type: string type: array title: Sso Group Names permissions: items: type: string format: uuid type: array title: Permissions type: object title: UpdateRoleDto UpdateServiceKeyRequestBodyDto: properties: name: anyOf: - type: string - type: 'null' title: Name roles: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Roles type: object title: UpdateServiceKeyRequestBodyDto UpdateUaasVolumeNdsDto: properties: nds: anyOf: - type: boolean - type: 'null' title: Nds nds_excluded_paths: anyOf: - type: string - type: 'null' title: Nds Excluded Paths nds_included_paths: anyOf: - type: string - type: 'null' title: Nds Included Paths type: object title: UpdateUaasVolumeNdsDto UserCreated: properties: action: type: string const: User Created title: Action item: $ref: '#/components/schemas/UserDto' type: object required: - action - item title: UserCreated UserDto: properties: id: type: string format: uuid title: Id username: type: string title: Username account_owner: type: boolean title: Account Owner default: false created: type: string format: date-time title: Created last_login: type: string format: date-time title: Last Login type: object required: - id - username - created - last_login title: UserDto UserKeyDto: properties: id: type: string format: uuid title: Id username: type: string title: Username user: type: string format: uuid title: User key: type: string title: Key expiration: type: string format: date-time title: Expiration date_created: type: string format: date-time title: Date Created last_accessed: type: string format: date-time title: Last Accessed type: object required: - id - username - user - key - expiration - date_created - last_accessed title: UserKeyDto UserKeysDto: properties: items: items: $ref: '#/components/schemas/UserKeyDto' type: array title: Items type: object required: - items title: UserKeysDto UsersDto: properties: items: items: $ref: '#/components/schemas/UserDto' type: array title: Items type: object required: - items title: UsersDto ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError ValidationErrorResponse: properties: message: type: string title: Message detail: items: additionalProperties: true type: object type: array title: Detail example: - ctx: error: 'invalid length: expected length 32 for simple format, found 3' input: '123' loc: - path - id msg: 'Input should be a valid UUID, invalid length: expected length 32 for simple format, found 3' type: uuid_parsing type: object required: - message - detail title: ValidationErrorResponse ViprCredentialRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: type: string minLength: 1 title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_id: type: string format: uuid title: Appliance Id cred_type: type: string const: vipr title: Cred Type default: vipr type: object required: - name - username - secret - appliance_id title: ViprCredentialRequest ViprCredentialUpdateRequest: properties: name: type: string minLength: 1 title: Name hostname: type: string title: Hostname default: '' username: type: string minLength: 1 title: Username secret: anyOf: - type: string - type: 'null' title: Secret verify_certs: type: boolean title: Verify Certs default: true note: type: string title: Note default: '' appliance_ids: items: type: string format: uuid type: array minItems: 1 title: Appliance Ids cred_type: type: string const: vipr title: Cred Type default: vipr type: object required: - name - username - appliance_ids title: ViprCredentialUpdateRequest VolumeBaseDto: properties: id: type: string title: Id description: anyOf: - type: string - type: 'null' title: Description remote_access_enabled: anyOf: - type: boolean - type: 'null' title: Remote Access Enabled provider: anyOf: - $ref: '#/components/schemas/NocCloudProvider' - type: 'null' nds_capable: anyOf: - type: boolean - type: 'null' title: Nds Capable description: NOC's verdict on whether the volume can be indexed by an NDS. Reported by the live volume list; null otherwise. nds_disqualifications: items: type: string type: array title: Nds Disqualifications description: NOC's reasons the volume cannot be indexed by an NDS. Empty when it can, or when no verdict was reported. type: object required: - id title: VolumeBaseDto VolumeCapacityHistoryPointDto: properties: timestamp: type: string format: date-time title: Timestamp bytes_in_cloud: type: integer title: Bytes In Cloud type: object required: - timestamp - bytes_in_cloud title: VolumeCapacityHistoryPointDto VolumeCapacityHistoryResponseDto: properties: volume_id: type: string title: Volume Id data_points: items: $ref: '#/components/schemas/VolumeCapacityHistoryPointDto' type: array title: Data Points type: object required: - volume_id title: VolumeCapacityHistoryResponseDto VolumeConnectionItemDto: properties: cloud_provider: anyOf: - $ref: '#/components/schemas/NocCloudProvider' - type: 'null' cloud_region: anyOf: - type: string - type: 'null' title: Cloud Region protocol: items: $ref: '#/components/schemas/Protocol' type: array title: Protocol accessible_data: anyOf: - type: integer - type: 'null' title: Accessible Data unprotected_data: anyOf: - type: integer - type: 'null' title: Unprotected Data volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name status: anyOf: - type: string - type: 'null' title: Status permission_policy: anyOf: - $ref: '#/components/schemas/PermissionPolicy' - type: 'null' security_mode: anyOf: - $ref: '#/components/schemas/SecurityMode' - type: 'null' appliance_id: type: string title: Appliance Id appliance_name: type: string title: Appliance Name last_snapshot_utc: anyOf: - type: string format: date-time - type: 'null' title: Last Snapshot Utc current_snapshot_status: $ref: '#/components/schemas/SnapshotStatus' default: idle connection_permission: anyOf: - $ref: '#/components/schemas/ConnectionPermission' - type: 'null' role: $ref: '#/components/schemas/portal__api__dto__volumes__Role' appliance_hostname: anyOf: - type: string - type: 'null' title: Appliance Hostname is_readonly: anyOf: - type: boolean - type: 'null' title: Is Readonly share_count: anyOf: - type: integer - type: 'null' title: Share Count export_count: anyOf: - type: integer - type: 'null' title: Export Count ftp_dir_count: anyOf: - type: integer - type: 'null' title: Ftp Dir Count snapshot_start: anyOf: - type: integer - type: 'null' title: Snapshot Start snapshot_stop: anyOf: - type: integer - type: 'null' title: Snapshot Stop snapshot_days: items: type: string type: array title: Snapshot Days snapshot_frequency: anyOf: - type: integer - type: 'null' title: Snapshot Frequency sync_schedule: anyOf: - additionalProperties: true type: object - type: 'null' title: Sync Schedule pinned_folders_count: anyOf: - type: integer - type: 'null' title: Pinned Folders Count autofault_folders_count: anyOf: - type: integer - type: 'null' title: Autofault Folders Count type: object required: - volume_id - volume_name - appliance_id - appliance_name - role title: VolumeConnectionItemDto description: "One ``(volume, appliance)`` connection row from\n``GET /volume_connections``.\n\ \nThe response is denormalised one-row-per-mount (N appliances → N\nrows).\ \ Nullability mirrors :class:`VolumeApplianceRow` end-to-end —\n``None`` means\ \ \"no data available yet\" and is intentionally\ndistinct from ``0`` / :attr:`SnapshotStatus.idle`.\n\ \n* ``protocol`` — full deduplicated list in canonical\n SMB → NFS → FTP\ \ order; empty if no share configured.\n* ``connection_permission`` — derived\ \ from\n ``volumes_v2.remoteaccess_autoaccept`` (master) or\n ``volume_edge_states.remoteaccess_permission``\ \ (non-master).\n* ``accessible_data`` / ``unprotected_data`` — parsed byte\ \ counts;\n ``None`` when the appliance hasn't reported a number.\n* ``last_snapshot_utc``\ \ — tz-aware UTC, serialised as ISO 8601.\n\nThe trailing per-edge state block\ \ (``appliance_hostname`` through\n``autofault_folders_count``) carries every\ \ column the Volume\nDetails \"Data Protection\", \"Protocols\", \"Data Growth\"\ , and\n\"Additional Details\" cards need. Kept on this row (rather than a\n\ separate detail endpoint) so ``/volume_connections`` remains the\nsingle low-level\ \ resource for per-mount data — Portal's BFF and\nexternal API consumers compose\ \ it with ``/volumes/{id}`` to build\nhigher-level views." VolumeConnectionsResponseDto: properties: items: items: $ref: '#/components/schemas/VolumeConnectionItemDto' type: array title: Items type: object title: VolumeConnectionsResponseDto description: GET /volume_connections response — all matching mounts (no pagination). VolumeDetailsDto: properties: volume_id: type: string title: Volume Id volume_name: anyOf: - type: string - type: 'null' title: Volume Name edges: anyOf: - $ref: '#/components/schemas/VolumeEdgesDto' - type: 'null' cloud_region: anyOf: - type: string - type: 'null' title: Cloud Region used_capacity: anyOf: - type: string - type: 'null' title: Used Capacity percent_capacity_used: anyOf: - type: integer - type: 'null' title: Percent Capacity Used compression_percent: anyOf: - type: integer - type: 'null' title: Compression Percent protocol: items: $ref: '#/components/schemas/Protocol' type: array title: Protocol remote_access_enabled: anyOf: - type: boolean - type: 'null' title: Remote Access Enabled cloud_provider: anyOf: - $ref: '#/components/schemas/NocCloudProvider' - type: 'null' bucket: anyOf: - type: string - type: 'null' title: Bucket permission_policy: anyOf: - $ref: '#/components/schemas/PermissionPolicy' - type: 'null' security_mode: anyOf: - $ref: '#/components/schemas/SecurityMode' - type: 'null' case_sensitive: anyOf: - type: boolean - type: 'null' title: Case Sensitive connection_permission: anyOf: - $ref: '#/components/schemas/ConnectionPermission' - type: 'null' antiransom_enabled: anyOf: - type: boolean - type: 'null' title: Antiransom Enabled antivirus_enabled: anyOf: - type: boolean - type: 'null' title: Antivirus Enabled safe_delete_enabled: anyOf: - type: boolean - type: 'null' title: Safe Delete Enabled audit_enabled: anyOf: - type: boolean - type: 'null' title: Audit Enabled audit_output_type: anyOf: - type: string - type: 'null' title: Audit Output Type snapshot_retention: anyOf: - type: string - type: 'null' title: Snapshot Retention encryption_keys: items: type: string type: array title: Encryption Keys chunk_size: anyOf: - type: integer - type: 'null' title: Chunk Size compression: anyOf: - type: boolean - type: 'null' title: Compression dedupe: anyOf: - type: boolean - type: 'null' title: Dedupe volume_version: anyOf: - type: string - type: 'null' title: Volume Version cloud_credential_name: anyOf: - type: string - type: 'null' title: Cloud Credential Name cloud_credential_hostname: anyOf: - type: string - type: 'null' title: Cloud Credential Hostname cloud_credential_note: anyOf: - type: string - type: 'null' title: Cloud Credential Note type: object required: - volume_id title: VolumeDetailsDto description: 'Enriched volume response — volume-scoped fields only. Display fields below are pre-formatted server-side (``protocol``, ``permission_policy``, ``security_mode``, ``snapshot_retention``) so direct WebAPI consumers see UI-ready values instead of raw filer enums/bitmasks. The flat ``VolumeDto`` (``GET /volumes/{id}``) intentionally keeps the raw forms for backward compatibility. Per-edge state is **not** on this DTO. Callers needing per-mount data (share/export counts, per-edge schedules, per-edge dirty bytes, …) call ``GET /volume_connections?volume_id=`` — the resource split keeps the API resource-oriented and lets external consumers compose their own views without a UI-shaped "details+connections" fusion endpoint.' VolumeDto: properties: id: type: string title: Id description: anyOf: - type: string - type: 'null' title: Description remote_access_enabled: anyOf: - type: boolean - type: 'null' title: Remote Access Enabled provider: anyOf: - $ref: '#/components/schemas/NocCloudProvider' - type: 'null' nds_capable: anyOf: - type: boolean - type: 'null' title: Nds Capable description: NOC's verdict on whether the volume can be indexed by an NDS. Reported by the live volume list; null otherwise. nds_disqualifications: items: type: string type: array title: Nds Disqualifications description: NOC's reasons the volume cannot be indexed by an NDS. Empty when it can, or when no verdict was reported. edges: anyOf: - $ref: '#/components/schemas/VolumeEdgesDto' - type: 'null' location: anyOf: - type: string - type: 'null' title: Location gfl: type: boolean title: Gfl lock_server: type: string title: Lock Server used_capacity: anyOf: - type: string - type: 'null' title: Used Capacity percent_capacity_used: anyOf: - type: integer - type: 'null' title: Percent Capacity Used compression_data_reduction_percent: anyOf: - type: integer - type: 'null' title: Compression Data Reduction Percent share_features: anyOf: - type: string - type: 'null' title: Share Features gfa_mode: type: boolean title: Gfa Mode type: object required: - id - gfl - lock_server - gfa_mode title: VolumeDto VolumeEdgesDto: properties: master: $ref: '#/components/schemas/VolumeMasterDto' connected: items: type: string format: uuid type: array title: Connected connected_count: type: integer title: Connected Count type: object required: - master - connected_count title: VolumeEdgesDto VolumeMasterDto: properties: id: type: string format: uuid title: Id description: anyOf: - type: string - type: 'null' title: Description type: object required: - id title: VolumeMasterDto VolumeRenameEvent: properties: action: type: string const: Volume Rename Requested title: Action volume_id: type: string title: Volume Id volume_name: type: string title: Volume Name old_name: type: string title: Old Name new_name: type: string title: New Name edge_id: type: string format: uuid title: Edge Id task_id: anyOf: - type: string format: uuid - type: 'null' title: Task Id type: object required: - action - volume_id - volume_name - old_name - new_name - edge_id title: VolumeRenameEvent VolumeRenameRequestDto: properties: name: type: string maxLength: 25 minLength: 1 title: Name description: New volume name; trimmed, 1-25 chars. type: object required: - name title: VolumeRenameRequestDto description: 'Body for PATCH /volumes/{volume_id}/name. ``name`` is the new volume name. Surrounding whitespace is trimmed *before* the length constraints apply, so the cleaned value is 1-``VOLUME_NAME_MAX_LENGTH`` chars.' VolumeSortBy: type: string enum: - volume_name - cloud_provider - cloud_region - accessible_data - unprotected_data - last_snapshot_utc - appliance_name title: VolumeSortBy description: 'Allowlist for volume-centric sort keys. Invalid values → 422. All sorts produce a volume-cohesive ordering (mounts of the same volume stay grouped). Per-mount keys are rolled up so they make sense as a single value per volume: ``last_snapshot_utc`` → MAX across mounts; ``appliance_name`` → master mount edge name.' VolumeTelemetryObjectCountsDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/VolumeTelemetryObjectCountsRecord' type: array title: Items description: List of object count records (files and directories) type: object required: - items title: VolumeTelemetryObjectCountsDto description: List of volume object counts records VolumeTelemetryObjectCountsRecord: properties: appliance: type: string title: Appliance description: Appliance name/description serial_number: type: string title: Serial Number description: Appliance serial number time: type: integer title: Time description: Timestamp in milliseconds non_gl_file_count: anyOf: - type: integer - type: 'null' title: Non Gl File Count description: Count of non-Global File Lock files gl_file_count: anyOf: - type: integer - type: 'null' title: Gl File Count description: Count of Global File Lock files (excluded from time-to-protect) directory_count: type: integer title: Directory Count description: Count of directories volume_version: type: integer title: Volume Version description: Sequential snapshot version number type: object required: - appliance - serial_number - time - directory_count - volume_version title: VolumeTelemetryObjectCountsRecord description: Volume object counts record with appliance info. VolumeTelemetryProtectMeanDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/VolumeTelemetryProtectMeanRecords' type: array title: Items description: List of protection mean records grouped by appliance type: object required: - items title: VolumeTelemetryProtectMeanDto description: List of volume protection mean records VolumeTelemetryProtectMeanRecord: properties: time: type: integer title: Time description: Timestamp in milliseconds protect_mean: type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ title: Protect Mean description: Average time in seconds for files to be protected during this snapshot volume_version: type: integer title: Volume Version description: Sequential snapshot version number type: object required: - time - protect_mean - volume_version title: VolumeTelemetryProtectMeanRecord description: Volume protection mean record. VolumeTelemetryProtectMeanRecords: properties: appliance: type: string title: Appliance description: Appliance name/description serial_number: type: string title: Serial Number description: Appliance serial number snapshots: items: $ref: '#/components/schemas/VolumeTelemetryProtectMeanRecord' type: array title: Snapshots description: Snapshot protection mean records for this appliance type: object required: - appliance - serial_number title: VolumeTelemetryProtectMeanRecords description: Volume protection mean records grouped by appliance. VolumeTelemetryPushTimelineDataEventDto: properties: phase: type: string const: data_snapshot title: Phase description: 'Event type: 1 indicates data snapshot phase (P1)' appliance: type: string title: Appliance description: Appliance name/description serial_number: type: string title: Serial Number description: Appliance serial number start_time: type: integer title: Start Time description: Timestamp in milliseconds when data snapshot phase started end_time: type: integer title: End Time description: Timestamp in milliseconds when data snapshot phase ended type: object required: - phase - appliance - serial_number - start_time - end_time title: VolumeTelemetryPushTimelineDataEventDto description: 'Volume push timeline data event. Represents when file data was pushed to cloud storage during snapshot creation.' VolumeTelemetryPushTimelineDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) data_events: items: $ref: '#/components/schemas/VolumeTelemetryPushTimelineDataEventDto' type: array title: Data Events description: Data snapshot phase (P1) events - multiple appliances can protect concurrently metadata_events: items: $ref: '#/components/schemas/VolumeTelemetryPushTimelineMetadataEventDto' type: array title: Metadata Events description: Metadata snapshot phase (P2) events - metadata snapshots are serialized appliance_count: type: integer title: Appliance Count description: Total number of appliances involved in snapshots min_time: type: integer title: Min Time description: Earliest timestamp in milliseconds across all events max_time: type: integer title: Max Time description: Latest timestamp in milliseconds across all events type: object required: - data_events - metadata_events - appliance_count - min_time - max_time title: VolumeTelemetryPushTimelineDto description: Volume push timeline with data and metadata events. VolumeTelemetryPushTimelineMetadataEventDto: properties: phase: type: string enum: - metadata_snapshot - metadata_snapshot_failed title: Phase description: 'Event type: 2 for successful metadata snapshot (P2), -2 for failed metadata snapshot' appliance: type: string title: Appliance description: Appliance name/description serial_number: type: string title: Serial Number description: Appliance serial number start_time: type: integer title: Start Time description: Timestamp in milliseconds when metadata snapshot phase started end_time: type: integer title: End Time description: Timestamp in milliseconds when metadata snapshot phase ended volume_version: type: integer title: Volume Version description: Sequential snapshot version number type: object required: - phase - appliance - serial_number - start_time - end_time - volume_version title: VolumeTelemetryPushTimelineMetadataEventDto description: 'Volume push timeline metadata event. Represents when metadata (directory structure, file info) was pushed during snapshot creation.' VolumeTelemetryRequestDto: properties: period: type: string title: Period description: 'Time period in ISO 8601 format. Examples: ''PT1H'' (last 1 hour), ''P1D'' (last 1 day), ''2025-01-01T00:00:00Z/2025-01-02T00:00:00Z'' (specific interval), or millisecond timestamps ''1730390400000/1730476800000''. Minimum range: 6 minutes.' serial_numbers: items: type: string format: uuid type: array title: Serial Numbers description: Appliance serial numbers to filter data - ensures stability across DR events chart_width: anyOf: - type: integer maximum: 5200.0 minimum: 100.0 - type: 'null' title: Chart Width description: Chart width in pixels (100-5200) - affects sampling density smart_sampling: anyOf: - type: boolean - type: 'null' title: Smart Sampling description: Enable optimized dataset for trend analysis with faster load times type: object required: - period - serial_numbers title: VolumeTelemetryRequestDto description: Request DTO for volume telemetry data (volume_id is in URL path). VolumeTelemetrySnapshotDetailsDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/VolumeTelemetrySnapshotDetailsRecord' type: array title: Items description: Raw snapshot metadata records with full details including P1/P2 phases type: object required: - items title: VolumeTelemetrySnapshotDetailsDto description: List of volume snapshot details records VolumeTelemetrySnapshotDetailsRecord: properties: appliance: type: string title: Appliance description: Appliance name/description serial_number: type: string title: Serial Number description: Appliance serial number volume: type: string title: Volume description: Volume identifier time: type: integer title: Time description: Timestamp in milliseconds when snapshot completed (same as metadata_snapshot_end) protect_mean: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Protect Mean description: Average time in seconds for files to be protected during this snapshot protect_max: anyOf: - type: string pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$ - type: 'null' title: Protect Max description: Max time in seconds any file took to be protected during this snapshot data_snapshot_start: anyOf: - type: integer - type: 'null' title: Data Snapshot Start description: Timestamp in ms when P1 (data phase) started. Null=GFL-only snapshot data_snapshot_end: anyOf: - type: integer - type: 'null' title: Data Snapshot End description: Timestamp in ms when P1 (data phase) ended. Null=GFL-only snapshot metadata_snapshot_start: type: integer title: Metadata Snapshot Start description: Timestamp in ms when P2 (metadata phase) started metadata_snapshot_end: type: integer title: Metadata Snapshot End description: Timestamp in ms when P2 (metadata phase) ended (snapshot completion) oud: anyOf: - type: integer - type: 'null' title: Oud description: Oldest unprotected data age in seconds - time since oldest file was last protected file_count_ngl: anyOf: - type: integer - type: 'null' title: File Count Ngl description: Count of non-GFL files in snapshot. Null=GFL-only snapshot file_count_gl: anyOf: - type: integer - type: 'null' title: File Count Gl description: Count of Global File Lock files in snapshot file_count_total: anyOf: - type: integer - type: 'null' title: File Count Total description: Total count of all files in snapshot (NGL + GFL) dir_count: type: integer title: Dir Count description: Count of directories in snapshot volume_version: type: integer title: Volume Version description: Sequential snapshot version number for this volume type: object required: - appliance - serial_number - volume - time - metadata_snapshot_start - metadata_snapshot_end - dir_count - volume_version title: VolumeTelemetrySnapshotDetailsRecord description: 'Volume snapshot metadata record per appliance. This provides detailed snapshot information for each appliance, including: - When the data snapshot phase (P1) started and ended - When the metadata snapshot phase (P2) started and ended - Protection metrics and file counts at the time of snapshot' VolumeTelemetrySnapshotPropagationDto: properties: metadata: additionalProperties: true type: object title: Metadata description: Telemetry metadata (help text, metric definitions) items: items: $ref: '#/components/schemas/VolumeTelemetrySnapshotPropagationRecord' type: array title: Items description: Snapshot propagation records with statistical analysis snapshot_appliances: items: type: string type: array title: Snapshot Appliances description: List of unique appliance names that created snapshots sync_appliances: items: type: string type: array title: Sync Appliances description: List of unique appliance names that synced snapshots type: object required: - items - snapshot_appliances - sync_appliances title: VolumeTelemetrySnapshotPropagationDto description: Volume snapshot propagation data with appliance lists. VolumeTelemetrySnapshotPropagationRecord: properties: snapshot_appliance: type: string title: Snapshot Appliance description: Appliance that created the snapshot snapshot_serial_number: type: string title: Snapshot Serial Number description: Serial number of the appliance that created the snapshot snapshot_time: type: integer title: Snapshot Time description: Timestamp in milliseconds when snapshot was created snapshot_version: type: integer title: Snapshot Version description: Sequential snapshot version number sync_appliance: type: string title: Sync Appliance description: Appliance that synced the snapshot sync_serial_number: type: string title: Sync Serial Number description: Serial number of the appliance that synced the snapshot sync_time: type: integer title: Sync Time description: Timestamp in milliseconds when sync completed propagation_duration: type: integer title: Propagation Duration description: Time in milliseconds for snapshot to propagate from creation to sync completion average_propagation_duration: type: integer title: Average Propagation Duration description: Average propagation duration in milliseconds for this snapshot across all appliances deviation: type: integer title: Deviation description: Deviation from average in milliseconds (propagation_duration - average_propagation_duration) type: object required: - snapshot_appliance - snapshot_serial_number - snapshot_time - snapshot_version - sync_appliance - sync_serial_number - sync_time - propagation_duration - average_propagation_duration - deviation title: VolumeTelemetrySnapshotPropagationRecord description: Volume snapshot propagation record with baseline propagation data. VolumesResponseDto: properties: items: items: $ref: '#/components/schemas/VolumeBaseDto' type: array title: Items type: object title: VolumesResponseDto WebAccessSSOConfigDto: properties: provider: type: string title: Provider client_id: type: string maxLength: 191 title: Client Id secret: type: string format: password title: Secret writeOnly: true key: type: string maxLength: 191 title: Key login_button_label: anyOf: - type: string maxLength: 100 - type: 'null' title: Login Button Label type: object required: - provider - client_id - secret - key title: WebAccessSSOConfigDto WebAccessSSOConfigUpdate: properties: action: type: string const: Web Access SSO Config Updated title: Action old: anyOf: - $ref: '#/components/schemas/WebAccessSSOConfigDto' - type: 'null' new: anyOf: - $ref: '#/components/schemas/WebAccessSSOConfigDto' - type: 'null' type: object required: - action title: WebAccessSSOConfigUpdate WebAccessSSOConfigUpdateResponseDto: properties: provider: type: string title: Provider client_id: type: string maxLength: 191 title: Client Id secret: type: string format: password title: Secret writeOnly: true key: type: string maxLength: 191 title: Key login_button_label: anyOf: - type: string maxLength: 100 - type: 'null' title: Login Button Label type: object required: - provider - client_id - secret - key title: WebAccessSSOConfigUpdateResponseDto portal__api__dto__activity_logs__EventDetails__Role: properties: action: type: string enum: - Role Created - Role Deleted title: Action item: $ref: '#/components/schemas/ActivityLogsRoleDto' type: object required: - action - item title: Role portal__api__dto__volumes__Role: type: string enum: - owner - connected title: Role securitySchemes: ServiceKeyHeader: type: apiKey in: header name: x-service-key description: Service key for programmatic API access. Must be used together with x-service-secret. ServiceSecretHeader: type: apiKey in: header name: x-service-secret description: Service secret for programmatic API access. Must be used together with x-service-key. UserKeyHeader: type: apiKey in: header name: x-user-key description: User key for user-specific API access. HTTPBearer: type: http scheme: bearer bearerFormat: JWT description: Bearer token obtained from /auth/token endpoint. OAuth2ClientCredentials: type: oauth2 description: Standard OAuth2 Client Credentials flow (RFC 6749 §4.4). Send `client_id` (service key) and `client_secret` (service secret) as form-encoded body parameters to the token endpoint. flows: clientCredentials: tokenUrl: /auth/token scopes: {} tags: - name: Account Management - name: Activity Logs - name: AI Activate description: '**Limited Private Preview.** AI Activate is available only through a limited private preview and is not generally available. Endpoints require the account `ai_activate` license bit, and all AI Activate capabilities are further gated by the account-level `ai-activate-inventories` feature flag. Reach out to your Nasuni account team to request private preview access before using these endpoints.' - name: Auth - name: Cloud Credentials description: This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. - name: Configuration - name: Edge Appliances (Edge) description: This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. - name: Encryption Keys description: Manage appliance and volume encryption keys. - name: Enterprise Search - name: File IQ Appliances (File IQ) - name: Global File Accelerator (GFA) - name: Health - name: IAM - name: Notifications description: This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. - name: Ops IQ description: '**Requires Premium Ops IQ license** (`ops-iq-premium`). The Ops IQ Telemetry API is available only to accounts with the Premium Ops IQ license bit enabled. Reach out to your Nasuni account team or Support to enable Premium Ops IQ access before using these endpoints. For more information, see the [Ops IQ Documentation](https://docs.nasuni.com/docs/ops-iq-1).' - name: Serials - name: Software - name: Supportability description: Appliance-related functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. - name: Tasks - name: UniFS As A Service (UaaS) - name: Volume Connections - name: Volumes description: This functionality is not generally available in Portal. Customers should use the equivalent NMC APIs to maintain a single management experience. Customers who require access to these Portal APIs should contact their Nasuni Account Manager to discuss eligibility. Nasuni Edge Appliance v10.5 or later is required. servers: - url: https://am1.portal.api.nasuni.com description: Base URL for accounts assigned the US region. - url: https://eu1.portal.api.nasuni.com description: Base URL for accounts assigned the EU region. - url: https://ap1.portal.api.nasuni.com description: Base URL for accounts assigned the Asia-Pacific region. security: - HTTPBearer: []