openapi: 3.2.0 info: title: Portal Cloud Credentials 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: Cloud Credentials paths: /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_serials in: query required: false schema: anyOf: - type: array items: type: string format: uuid - type: 'null' description: Filter by appliance serial UUIDs title: Appliance Serials description: Filter by appliance serial UUIDs - 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' '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' 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' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '404': description: Edge appliance with the given serial does not exist '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '503': description: Edge appliance is unreachable (no recent heartbeat) /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' '404': description: Resource not found 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' 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' '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' '503': description: All targeted appliances are unreachable; no tasks were created. 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' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' /cloud-credentials/exports: post: tags: - Cloud Credentials summary: Create Cloud Credentials Export operationId: create_export_cloud_credentials_exports_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CloudCredentialExportRequestDto' required: true responses: '202': description: Export request accepted and processing in background content: application/json: schema: $ref: '#/components/schemas/ExportStatusDto' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Invalid request body format content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' security: - HTTPBearer: [] /cloud-credentials/exports/{request_id}: get: tags: - Cloud Credentials summary: Get Cloud Credential Export Status operationId: get_export_status_cloud_credentials_exports__request_id__get security: - HTTPBearer: [] parameters: - name: request_id in: path required: true schema: type: string format: uuid title: Request Id responses: '200': description: Export status retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ExportStatusDto' '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '404': description: Export request not found or has been deleted content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' /cloud-credentials/files/{file_id}: get: tags: - Cloud Credentials summary: Download Cloud Credential Export operationId: download_file_cloud_credentials_files__file_id__get security: - HTTPBearer: [] parameters: - name: file_id in: path required: true schema: type: string format: uuid title: File Id responses: '200': description: Export file stream (CSV) content: application/json: schema: {} text/csv: example: Credential Name|Access Key|Provider Type|Hostname|Validate SSL|Appliance Name|NEA Version|Appliance Status|Volume Names|In-Use Status|Created At|Updated At|Notes '401': description: Not authenticated content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '404': description: Export file not found (may be in progress, failed, or already deleted) content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponseBaseDto' components: schemas: 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. 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. 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). SortDirection: type: string enum: - ascending - descending title: SortDirection 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_serial: type: string format: uuid title: Appliance Serial 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_serial title: AWSS3CredentialRequest 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: cleversafe title: Cred Type default: cleversafe type: object required: - name - username - secret - appliance_serial title: CleversafeCredentialRequest 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: ibmcos title: Cred Type default: ibmcos type: object required: - name - username - secret - appliance_serial title: IBMCredentialRequest 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: googles3 title: Cred Type default: googles3 type: object required: - name - username - secret - appliance_serial title: GCSCredentialRequest ExportStatus: type: string enum: - pending - completed - failed title: ExportStatus 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials 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_serials title: AWSS3CredentialUpdateRequest 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials cred_type: type: string const: azure title: Cred Type default: azure type: object required: - name - username - appliance_serials title: AzureCredentialUpdateRequest 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: hcp title: Cred Type default: hcp type: object required: - name - username - secret - appliance_serial title: HCPCredentialRequest 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials 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_serials title: AWSS3GovCloudCredentialUpdateRequest 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. ErrorResponse: properties: message: type: string title: Message detail: anyOf: - {} - type: 'null' title: Detail type: object required: - message - detail title: ErrorResponse CloudCredentialDeleteRequest: properties: appliance_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials description: Target appliance serial UUIDs for delete fan-out type: object required: - appliance_serials title: CloudCredentialDeleteRequest description: Delete request body — explicit target appliance serials. 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials 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_serials title: S3CompatibleCredentialUpdateRequest 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 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. 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_serial: type: string format: uuid title: Appliance Serial 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_serial title: S3CompatibleCredentialRequest TaskState: type: string enum: - in_progress - completed - failed title: TaskState ExportStatusDto: properties: id: type: string format: uuid title: Id status: $ref: '#/components/schemas/ExportStatus' file: anyOf: - type: string - type: 'null' title: File truncated: type: boolean title: Truncated default: false type: object required: - id - status title: ExportStatusDto 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). 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. CloudCredentialStatus: type: string enum: - synced - pending - failed - creating title: CloudCredentialStatus description: Derived status of a credential on a specific edge. 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 code: anyOf: - type: integer - type: 'null' title: Code description: Edge error code (408=timeout, 422=validation, 500=internal) error: type: string title: Error description: Error category (e.g. 'timeout', 'unprocessable_entity', 'unknown') message: type: string title: Message description: Human-readable error description detected_at: type: string format: date-time title: Detected At description: When Portal received the error from the edge or detected a timeout type: object required: - task_id - error - message - detected_at title: CloudCredentialErrorDto description: 'Error details returned when credential status is ''failed''. Populated from the latest edge error message associated with the credential''s most recent failed task, or synthetically when the edge does not respond within the timeout window.' 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). 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: azure title: Cred Type default: azure type: object required: - name - username - secret - appliance_serial title: AzureCredentialRequest 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 CloudCredentialExportRequestDto: properties: search: anyOf: - type: string - type: 'null' title: Search providers: anyOf: - items: $ref: '#/components/schemas/NocCloudProvider' type: array - type: 'null' title: Providers description: Filter by cloud provider shortnames appliance_serials: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Appliance Serials description: Filter by edge appliance serials volume_ids: anyOf: - items: type: string type: array - type: 'null' title: Volume Ids description: Filter by associated volume IDs sort_by: $ref: '#/components/schemas/CloudCredentialSortBy' default: name sort_direction: $ref: '#/components/schemas/SortDirection' default: ascending type: object title: CloudCredentialExportRequestDto description: 'Request body for cloud credential CSV exports. Mirrors list filters so the export reflects the currently filtered view.' 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_serial: type: string format: uuid title: Appliance Serial 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_serial title: AWSS3GovCloudCredentialRequest 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials cred_type: type: string const: vipr title: Cred Type default: vipr type: object required: - name - username - appliance_serials title: ViprCredentialUpdateRequest 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials cred_type: type: string const: googles3 title: Cred Type default: googles3 type: object required: - name - username - appliance_serials title: GCSCredentialUpdateRequest 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials cred_type: type: string const: hcp title: Cred Type default: hcp type: object required: - name - username - appliance_serials title: HCPCredentialUpdateRequest 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_serial: type: string format: uuid title: Appliance Serial cred_type: type: string const: vipr title: Cred Type default: vipr type: object required: - name - username - secret - appliance_serial title: ViprCredentialRequest 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. 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. ErrorResponseBaseDto: properties: message: type: string title: Message type: object required: - message title: ErrorResponseBaseDto NocCloudVendor: type: string enum: - customer - private - nasuni title: NocCloudVendor description: Who provisions the cloud infrastructure. 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_serials: items: type: string format: uuid type: array minItems: 1 title: Appliance Serials cred_type: type: string const: ibmcos title: Cred Type default: ibmcos type: object required: - name - username - appliance_serials title: IBMCredentialUpdateRequest 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.' 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: {}