openapi: 3.2.0 info: title: Portal Edge Appliances (Edge) API version: 0.1.0 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: [] tags: - name: Edge Appliances (Edge) paths: /edges: get: tags: - Edge Appliances (Edge) summary: Get Edges description: "Get all Edge appliances for the account.\n\nReturns a list of Edge appliances with optional filtering by service status.\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\nReturns:\n EdgesDto: List of Edge appliances matching the filter criteria" 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 responses: '200': description: Edge appliances retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EdgesDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Resource state conflict 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' /edges/{edge_id}: get: tags: - Edge Appliances (Edge) summary: Get Edge description: "Get detailed information about 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' '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' '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' /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' '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' '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' patch: tags: - Edge Appliances (Edge) summary: Update Edge FIQ Service description: "Update the FIQ service configuration for an Edge appliance.\n\nEnable or disable event forwarding and configure the target File IQ appliance.\nRequires 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' '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' '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' /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.\nRequires 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' '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' '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' 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.\nRequires 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' '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' '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' components: schemas: 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 EdgeDto: properties: id: type: string format: uuid title: Id description: type: string title: Description services: $ref: '#/components/schemas/EdgeServicesDto' serial: type: string format: uuid title: Serial 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: type: integer title: Owned Volumes remotely_connected_volumes: type: integer 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 location: anyOf: - type: string - type: 'null' title: Location last_config_backup_date: anyOf: - type: string - type: 'null' title: Last Config Backup Date type: object required: - id - description - serial - owned_volumes - remotely_connected_volumes - volumes - build - machine title: EdgeDto 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 EdgesDto: properties: items: items: $ref: '#/components/schemas/SimpleEdgeDto' type: array title: Items type: object title: EdgesDto 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 EdgeS3EdgeConfigDto: properties: enabled: type: boolean title: Enabled type: object required: - enabled title: EdgeS3EdgeConfigDto ErrorResponse: properties: message: type: string title: Message detail: anyOf: - {} - type: 'null' title: Detail type: object required: - message - detail title: ErrorResponse SimpleEdgeDto: properties: id: type: string format: uuid title: Id description: type: string title: Description services: $ref: '#/components/schemas/EdgeServicesDto' serial: type: string format: uuid title: Serial 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 type: object required: - id - description - serial - build title: SimpleEdgeDto EdgeVolumes: properties: owned: type: integer title: Owned remotely_connected: type: integer title: Remotely Connected type: object required: - owned - remotely_connected title: EdgeVolumes EdgeMachine: properties: cpu: type: string title: Cpu ram: type: string title: Ram cache_disk: type: string title: Cache Disk os_disk: type: string title: Os Disk fiq_disk: type: string title: Fiq Disk cow_disk: type: string 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 required: - cpu - ram - cache_disk - os_disk - fiq_disk - cow_disk title: EdgeMachine 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 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 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: {}