mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-19 05:59:16 -04:00
- Introduced new data structures for library and job information to align with the Rust daemon output. - Implemented real-time job tracking by fetching the current job list and subscribing to job events. - Enhanced event handling to manage job states (started, progress, completed, failed, paused, resumed) effectively. - Improved logging for connection status and job events to aid in debugging and user experience. - Updated JobInfo model to allow mutable properties for better state management during job updates.
5757 lines
153 KiB
JSON
5757 lines
153 KiB
JSON
{
|
|
"actions": [
|
|
{
|
|
"input": true,
|
|
"method": "action:network.pair.generate.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:libraries.rename.input.v1",
|
|
"output": true,
|
|
"type": "core_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:volumes.untrack.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:libraries.session.set_current.input.v1",
|
|
"output": true,
|
|
"type": "core_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.pair.cancel.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:locations.remove.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.start.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:locations.rescan.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:files.validation.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:files.delete.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:files.duplicate_detection.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:libraries.delete.input.v1",
|
|
"output": true,
|
|
"type": "core_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.pair.join.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:jobs.pause.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:locations.add.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:jobs.cancel.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:volumes.speed_test.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:jobs.resume.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:media.thumbnail.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:files.copy.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:indexing.start.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:volumes.track.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:tags.create.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:libraries.export.input.v1",
|
|
"output": true,
|
|
"type": "core_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:libraries.create.input.v1",
|
|
"output": true,
|
|
"type": "core_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.stop.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:tags.apply.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.device.revoke.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
},
|
|
{
|
|
"input": true,
|
|
"method": "action:network.spacedrop.send.input.v1",
|
|
"output": true,
|
|
"type": "library_action"
|
|
}
|
|
],
|
|
"events": true,
|
|
"queries": [
|
|
{
|
|
"input": null,
|
|
"method": "query:jobs.list.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:network.devices.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:jobs.info.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:libraries.session.current.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:network.pair.status.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:libraries.info.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:tags.search.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:core.status.v1",
|
|
"output": {
|
|
"properties": {
|
|
"built_at": {
|
|
"type": "string"
|
|
},
|
|
"device_info": {
|
|
"$ref": "#/definitions/DeviceInfo"
|
|
},
|
|
"libraries": {
|
|
"items": {
|
|
"$ref": "#/definitions/LibraryInfo"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"library_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"network": {
|
|
"$ref": "#/definitions/NetworkStatus"
|
|
},
|
|
"services": {
|
|
"$ref": "#/definitions/ServiceStatus"
|
|
},
|
|
"system": {
|
|
"$ref": "#/definitions/SystemInfo"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"built_at",
|
|
"device_info",
|
|
"libraries",
|
|
"library_count",
|
|
"network",
|
|
"services",
|
|
"system",
|
|
"version"
|
|
],
|
|
"title": "CoreStatus",
|
|
"type": "object"
|
|
},
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:locations.list.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:search.files.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:libraries.list.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
},
|
|
{
|
|
"input": null,
|
|
"method": "query:network.status.v1",
|
|
"output": true,
|
|
"type": "query"
|
|
}
|
|
],
|
|
"types": {
|
|
"ApfsContainer": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"ApfsVolumeInfo": {
|
|
"description": "APFS volume information within a container",
|
|
"properties": {
|
|
"capacity_consumed": {
|
|
"description": "Capacity consumed by this volume in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"disk_id": {
|
|
"description": "Volume disk identifier (e.g., \"disk3s5\")",
|
|
"type": "string"
|
|
},
|
|
"filevault": {
|
|
"description": "Whether FileVault is enabled",
|
|
"type": "boolean"
|
|
},
|
|
"mount_point": {
|
|
"description": "Mount point (if mounted)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Volume name",
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsVolumeRole"
|
|
}
|
|
],
|
|
"description": "Volume role (System, Data, Preboot, etc.)"
|
|
},
|
|
"sealed": {
|
|
"description": "Whether the volume is sealed",
|
|
"type": "boolean"
|
|
},
|
|
"uuid": {
|
|
"description": "Volume UUID",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_consumed",
|
|
"disk_id",
|
|
"filevault",
|
|
"name",
|
|
"role",
|
|
"sealed",
|
|
"uuid"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeRole": {
|
|
"description": "APFS volume roles in the container",
|
|
"oneOf": [
|
|
{
|
|
"description": "System volume (read-only system files)",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Data volume (user data and applications)",
|
|
"enum": [
|
|
"Data"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Preboot volume (boot support files)",
|
|
"enum": [
|
|
"Preboot"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Recovery volume (recovery environment)",
|
|
"enum": [
|
|
"Recovery"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "VM volume (virtual memory)",
|
|
"enum": [
|
|
"VM"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other role or no specific role",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "Represents an APFS container (physical storage with multiple volumes)",
|
|
"properties": {
|
|
"capacity_free": {
|
|
"description": "Capacity not allocated in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"capacity_in_use": {
|
|
"description": "Capacity in use by all volumes in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"container_id": {
|
|
"description": "Container identifier (e.g., \"disk3\")",
|
|
"type": "string"
|
|
},
|
|
"physical_store": {
|
|
"description": "Physical store device (e.g., \"disk0s2\")",
|
|
"type": "string"
|
|
},
|
|
"total_capacity": {
|
|
"description": "Total container capacity in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"uuid": {
|
|
"description": "Container UUID",
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"description": "All volumes in this container",
|
|
"items": {
|
|
"$ref": "#/definitions/ApfsVolumeInfo"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_free",
|
|
"capacity_in_use",
|
|
"container_id",
|
|
"physical_store",
|
|
"total_capacity",
|
|
"uuid",
|
|
"volumes"
|
|
],
|
|
"title": "ApfsContainer",
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeInfo": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"ApfsVolumeRole": {
|
|
"description": "APFS volume roles in the container",
|
|
"oneOf": [
|
|
{
|
|
"description": "System volume (read-only system files)",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Data volume (user data and applications)",
|
|
"enum": [
|
|
"Data"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Preboot volume (boot support files)",
|
|
"enum": [
|
|
"Preboot"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Recovery volume (recovery environment)",
|
|
"enum": [
|
|
"Recovery"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "VM volume (virtual memory)",
|
|
"enum": [
|
|
"VM"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other role or no specific role",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "APFS volume information within a container",
|
|
"properties": {
|
|
"capacity_consumed": {
|
|
"description": "Capacity consumed by this volume in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"disk_id": {
|
|
"description": "Volume disk identifier (e.g., \"disk3s5\")",
|
|
"type": "string"
|
|
},
|
|
"filevault": {
|
|
"description": "Whether FileVault is enabled",
|
|
"type": "boolean"
|
|
},
|
|
"mount_point": {
|
|
"description": "Mount point (if mounted)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Volume name",
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsVolumeRole"
|
|
}
|
|
],
|
|
"description": "Volume role (System, Data, Preboot, etc.)"
|
|
},
|
|
"sealed": {
|
|
"description": "Whether the volume is sealed",
|
|
"type": "boolean"
|
|
},
|
|
"uuid": {
|
|
"description": "Volume UUID",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_consumed",
|
|
"disk_id",
|
|
"filevault",
|
|
"name",
|
|
"role",
|
|
"sealed",
|
|
"uuid"
|
|
],
|
|
"title": "ApfsVolumeInfo",
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeRole": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "APFS volume roles in the container",
|
|
"oneOf": [
|
|
{
|
|
"description": "System volume (read-only system files)",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Data volume (user data and applications)",
|
|
"enum": [
|
|
"Data"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Preboot volume (boot support files)",
|
|
"enum": [
|
|
"Preboot"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Recovery volume (recovery environment)",
|
|
"enum": [
|
|
"Recovery"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "VM volume (virtual memory)",
|
|
"enum": [
|
|
"VM"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other role or no specific role",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "ApfsVolumeRole"
|
|
},
|
|
"DiskType": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Represents the type of physical storage device",
|
|
"oneOf": [
|
|
{
|
|
"description": "Solid State Drive",
|
|
"enum": [
|
|
"SSD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Hard Disk Drive",
|
|
"enum": [
|
|
"HDD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or virtual disk type",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
],
|
|
"title": "DiskType"
|
|
},
|
|
"Event": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"ApfsContainer": {
|
|
"description": "Represents an APFS container (physical storage with multiple volumes)",
|
|
"properties": {
|
|
"capacity_free": {
|
|
"description": "Capacity not allocated in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"capacity_in_use": {
|
|
"description": "Capacity in use by all volumes in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"container_id": {
|
|
"description": "Container identifier (e.g., \"disk3\")",
|
|
"type": "string"
|
|
},
|
|
"physical_store": {
|
|
"description": "Physical store device (e.g., \"disk0s2\")",
|
|
"type": "string"
|
|
},
|
|
"total_capacity": {
|
|
"description": "Total container capacity in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"uuid": {
|
|
"description": "Container UUID",
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"description": "All volumes in this container",
|
|
"items": {
|
|
"$ref": "#/definitions/ApfsVolumeInfo"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_free",
|
|
"capacity_in_use",
|
|
"container_id",
|
|
"physical_store",
|
|
"total_capacity",
|
|
"uuid",
|
|
"volumes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeInfo": {
|
|
"description": "APFS volume information within a container",
|
|
"properties": {
|
|
"capacity_consumed": {
|
|
"description": "Capacity consumed by this volume in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"disk_id": {
|
|
"description": "Volume disk identifier (e.g., \"disk3s5\")",
|
|
"type": "string"
|
|
},
|
|
"filevault": {
|
|
"description": "Whether FileVault is enabled",
|
|
"type": "boolean"
|
|
},
|
|
"mount_point": {
|
|
"description": "Mount point (if mounted)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Volume name",
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsVolumeRole"
|
|
}
|
|
],
|
|
"description": "Volume role (System, Data, Preboot, etc.)"
|
|
},
|
|
"sealed": {
|
|
"description": "Whether the volume is sealed",
|
|
"type": "boolean"
|
|
},
|
|
"uuid": {
|
|
"description": "Volume UUID",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_consumed",
|
|
"disk_id",
|
|
"filevault",
|
|
"name",
|
|
"role",
|
|
"sealed",
|
|
"uuid"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeRole": {
|
|
"description": "APFS volume roles in the container",
|
|
"oneOf": [
|
|
{
|
|
"description": "System volume (read-only system files)",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Data volume (user data and applications)",
|
|
"enum": [
|
|
"Data"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Preboot volume (boot support files)",
|
|
"enum": [
|
|
"Preboot"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Recovery volume (recovery environment)",
|
|
"enum": [
|
|
"Recovery"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "VM volume (virtual memory)",
|
|
"enum": [
|
|
"VM"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other role or no specific role",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"DiskType": {
|
|
"description": "Represents the type of physical storage device",
|
|
"oneOf": [
|
|
{
|
|
"description": "Solid State Drive",
|
|
"enum": [
|
|
"SSD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Hard Disk Drive",
|
|
"enum": [
|
|
"HDD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or virtual disk type",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"FileOperation": {
|
|
"description": "Types of file operations",
|
|
"enum": [
|
|
"Copy",
|
|
"Move",
|
|
"Delete",
|
|
"Rename"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FileSystem": {
|
|
"description": "Represents the filesystem type of the volume",
|
|
"oneOf": [
|
|
{
|
|
"description": "Windows NTFS filesystem",
|
|
"enum": [
|
|
"NTFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "FAT32 filesystem",
|
|
"enum": [
|
|
"FAT32"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Linux EXT4 filesystem",
|
|
"enum": [
|
|
"EXT4"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Apple APFS filesystem",
|
|
"enum": [
|
|
"APFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ExFAT filesystem",
|
|
"enum": [
|
|
"ExFAT"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Btrfs filesystem (Linux)",
|
|
"enum": [
|
|
"Btrfs"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ZFS filesystem",
|
|
"enum": [
|
|
"ZFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Windows ReFS filesystem",
|
|
"enum": [
|
|
"ReFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other/unknown filesystem type",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"FsRawEventKind": {
|
|
"description": "Raw filesystem event kinds emitted by the watcher without DB resolution",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Create": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Create"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Modify": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Modify"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Remove": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Remove"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Rename": {
|
|
"properties": {
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"to": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"from",
|
|
"to"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Rename"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"IndexerMetrics": {
|
|
"description": "Comprehensive metrics for indexing operations",
|
|
"properties": {
|
|
"avg_batch_size": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"avg_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"batch_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"bytes_per_second": {
|
|
"format": "double",
|
|
"type": "number"
|
|
},
|
|
"content_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_reads": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_writes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"discovery_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"files_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"non_critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"peak_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"processing_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"skipped_paths": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"total_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"avg_batch_size",
|
|
"batch_count",
|
|
"bytes_per_second",
|
|
"content_duration",
|
|
"critical_errors",
|
|
"db_reads",
|
|
"db_writes",
|
|
"dirs_per_second",
|
|
"discovery_duration",
|
|
"files_per_second",
|
|
"non_critical_errors",
|
|
"processing_duration",
|
|
"skipped_paths",
|
|
"total_duration",
|
|
"total_errors"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"IndexerStats": {
|
|
"description": "Statistics collected during indexing",
|
|
"properties": {
|
|
"bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"files": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"skipped": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"symlinks": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"bytes",
|
|
"dirs",
|
|
"errors",
|
|
"files",
|
|
"skipped",
|
|
"symlinks"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"JobOutput": {
|
|
"description": "Output from a completed job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job completed successfully with no specific output",
|
|
"properties": {
|
|
"type": {
|
|
"enum": [
|
|
"Success"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File copy job output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"copied_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"copied_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileCopy"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Indexer job output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"metrics": {
|
|
"$ref": "#/definitions/IndexerMetrics"
|
|
},
|
|
"stats": {
|
|
"$ref": "#/definitions/IndexerStats"
|
|
}
|
|
},
|
|
"required": [
|
|
"metrics",
|
|
"stats"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Indexed"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Thumbnail generation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"generated_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"failed_count",
|
|
"generated_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"ThumbnailsGenerated"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Thumbnail generation output (detailed)",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"error_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"generated_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"skipped_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_size_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"error_count",
|
|
"generated_count",
|
|
"skipped_count",
|
|
"total_size_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"ThumbnailGeneration"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File move/rename operation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"moved_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"failed_count",
|
|
"moved_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileMove"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File delete operation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"deleted_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"deleted_count",
|
|
"failed_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileDelete"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Duplicate detection output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"duplicate_groups": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"potential_savings": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_duplicates": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"duplicate_groups",
|
|
"potential_savings",
|
|
"total_duplicates"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"DuplicateDetection"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File validation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"issues_found": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes_validated": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"validated_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"issues_found",
|
|
"total_bytes_validated",
|
|
"validated_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileValidation"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Generic output with custom data",
|
|
"properties": {
|
|
"data": true,
|
|
"type": {
|
|
"enum": [
|
|
"Custom"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"MountType": {
|
|
"description": "Represents how the volume is mounted in the system",
|
|
"oneOf": [
|
|
{
|
|
"description": "System/boot volume",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External/removable volume",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network-attached volume",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Virtual/container volume",
|
|
"enum": [
|
|
"Virtual"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"PathMapping": {
|
|
"description": "Path mapping for resolving virtual paths to actual storage locations",
|
|
"properties": {
|
|
"actual_path": {
|
|
"description": "Actual storage path (e.g., \"/System/Volumes/Data/Users\")",
|
|
"type": "string"
|
|
},
|
|
"virtual_path": {
|
|
"description": "Virtual path (e.g., \"/Users\")",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"actual_path",
|
|
"virtual_path"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"Volume": {
|
|
"description": "Represents a physical or virtual storage volume in the system",
|
|
"properties": {
|
|
"apfs_container": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsContainer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "APFS container information (macOS only)"
|
|
},
|
|
"auto_track_eligible": {
|
|
"description": "Whether this volume should be auto-tracked",
|
|
"type": "boolean"
|
|
},
|
|
"container_volume_id": {
|
|
"description": "Container-relative volume ID for same-container detection",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"device_id": {
|
|
"description": "Device this volume belongs to",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"disk_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/DiskType"
|
|
}
|
|
],
|
|
"description": "Type of storage device (SSD, HDD, etc)"
|
|
},
|
|
"error_status": {
|
|
"description": "Current error status if any",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"file_system": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/FileSystem"
|
|
}
|
|
],
|
|
"description": "Filesystem type (NTFS, EXT4, etc)"
|
|
},
|
|
"fingerprint": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
}
|
|
],
|
|
"description": "Unique fingerprint for this volume"
|
|
},
|
|
"hardware_id": {
|
|
"description": "Hardware identifier (platform-specific)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"is_mounted": {
|
|
"description": "Whether the volume is currently mounted",
|
|
"type": "boolean"
|
|
},
|
|
"is_user_visible": {
|
|
"description": "Whether this volume should be visible in default views",
|
|
"type": "boolean"
|
|
},
|
|
"last_updated": {
|
|
"description": "When this volume information was last updated",
|
|
"format": "date-time",
|
|
"type": "string"
|
|
},
|
|
"mount_point": {
|
|
"description": "Primary path where the volume is mounted",
|
|
"type": "string"
|
|
},
|
|
"mount_points": {
|
|
"description": "Additional mount points (for APFS volumes, etc.)",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"mount_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/MountType"
|
|
}
|
|
],
|
|
"description": "Type of mount (system, external, etc)"
|
|
},
|
|
"name": {
|
|
"description": "Human-readable volume name",
|
|
"type": "string"
|
|
},
|
|
"path_mappings": {
|
|
"description": "Path resolution mappings (for firmlinks/symlinks)",
|
|
"items": {
|
|
"$ref": "#/definitions/PathMapping"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"read_only": {
|
|
"description": "Whether the volume is mounted read-only",
|
|
"type": "boolean"
|
|
},
|
|
"read_speed_mbps": {
|
|
"description": "Read speed in megabytes per second",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"total_bytes_available": {
|
|
"description": "Available storage space in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes_capacity": {
|
|
"description": "Total storage capacity in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"volume_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/VolumeType"
|
|
}
|
|
],
|
|
"description": "Classification of this volume for UX decisions"
|
|
},
|
|
"write_speed_mbps": {
|
|
"description": "Write speed in megabytes per second",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"auto_track_eligible",
|
|
"device_id",
|
|
"disk_type",
|
|
"file_system",
|
|
"fingerprint",
|
|
"is_mounted",
|
|
"is_user_visible",
|
|
"last_updated",
|
|
"mount_point",
|
|
"mount_points",
|
|
"mount_type",
|
|
"name",
|
|
"path_mappings",
|
|
"read_only",
|
|
"total_bytes_available",
|
|
"total_bytes_capacity",
|
|
"volume_type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"VolumeFingerprint": {
|
|
"description": "Unique fingerprint for a storage volume",
|
|
"type": "string"
|
|
},
|
|
"VolumeInfo": {
|
|
"description": "Summary information about a volume (for updates and caching)",
|
|
"properties": {
|
|
"error_status": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"is_mounted": {
|
|
"type": "boolean"
|
|
},
|
|
"read_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"total_bytes_available": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"write_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"is_mounted",
|
|
"total_bytes_available"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"VolumeType": {
|
|
"description": "Classification of volume types for UX and auto-tracking decisions",
|
|
"oneOf": [
|
|
{
|
|
"description": "Primary system drive containing OS and user data Examples: C:\\ on Windows, / on Linux, Macintosh HD on macOS",
|
|
"enum": [
|
|
"Primary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Dedicated user data volumes (separate from OS) Examples: /System/Volumes/Data on macOS, separate /home on Linux",
|
|
"enum": [
|
|
"UserData"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External or removable storage devices Examples: USB drives, external HDDs, /Volumes/* on macOS",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Secondary internal storage (additional drives/partitions) Examples: D:, E: drives on Windows, additional mounted drives",
|
|
"enum": [
|
|
"Secondary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "System/OS internal volumes (hidden from normal view) Examples: /System/Volumes/* on macOS, Recovery partitions",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network attached storage Examples: SMB mounts, NFS, cloud storage",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or unclassified volumes",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "A central event type that represents all events that can be emitted throughout the system",
|
|
"oneOf": [
|
|
{
|
|
"enum": [
|
|
"CoreStarted",
|
|
"CoreShutdown"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LibraryCreated": {
|
|
"properties": {
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LibraryCreated"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LibraryOpened": {
|
|
"properties": {
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LibraryOpened"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LibraryClosed": {
|
|
"properties": {
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LibraryClosed"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LibraryDeleted": {
|
|
"properties": {
|
|
"deleted_data": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"deleted_data",
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LibraryDeleted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"EntryCreated": {
|
|
"properties": {
|
|
"entry_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"entry_id",
|
|
"library_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"EntryCreated"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"EntryModified": {
|
|
"properties": {
|
|
"entry_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"entry_id",
|
|
"library_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"EntryModified"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"EntryDeleted": {
|
|
"properties": {
|
|
"entry_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"entry_id",
|
|
"library_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"EntryDeleted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"EntryMoved": {
|
|
"properties": {
|
|
"entry_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"new_path": {
|
|
"type": "string"
|
|
},
|
|
"old_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"entry_id",
|
|
"library_id",
|
|
"new_path",
|
|
"old_path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"EntryMoved"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"FsRawChange": {
|
|
"properties": {
|
|
"kind": {
|
|
"$ref": "#/definitions/FsRawEventKind"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"library_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"FsRawChange"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeAdded": {
|
|
"$ref": "#/definitions/Volume"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeAdded"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeRemoved": {
|
|
"properties": {
|
|
"fingerprint": {
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
}
|
|
},
|
|
"required": [
|
|
"fingerprint"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeRemoved"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeUpdated": {
|
|
"properties": {
|
|
"fingerprint": {
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
},
|
|
"new_info": {
|
|
"$ref": "#/definitions/VolumeInfo"
|
|
},
|
|
"old_info": {
|
|
"$ref": "#/definitions/VolumeInfo"
|
|
}
|
|
},
|
|
"required": [
|
|
"fingerprint",
|
|
"new_info",
|
|
"old_info"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeUpdated"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeSpeedTested": {
|
|
"properties": {
|
|
"fingerprint": {
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
},
|
|
"read_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"write_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"fingerprint",
|
|
"read_speed_mbps",
|
|
"write_speed_mbps"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeSpeedTested"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeMountChanged": {
|
|
"properties": {
|
|
"fingerprint": {
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
},
|
|
"is_mounted": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"fingerprint",
|
|
"is_mounted"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeMountChanged"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"VolumeError": {
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"fingerprint": {
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"fingerprint"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"VolumeError"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobQueued": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"job_type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobQueued"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobStarted": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"job_type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobStarted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobProgress": {
|
|
"properties": {
|
|
"generic_progress": true,
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"progress": {
|
|
"format": "double",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"job_type",
|
|
"progress"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobProgress"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobCompleted": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
},
|
|
"output": {
|
|
"$ref": "#/definitions/JobOutput"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"job_type",
|
|
"output"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobCompleted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobFailed": {
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"job_id",
|
|
"job_type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobFailed"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobCancelled": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
},
|
|
"job_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"job_type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobCancelled"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobPaused": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobPaused"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"JobResumed": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"JobResumed"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"IndexingStarted": {
|
|
"properties": {
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"location_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"IndexingStarted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"IndexingProgress": {
|
|
"properties": {
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"processed": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"location_id",
|
|
"processed"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"IndexingProgress"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"IndexingCompleted": {
|
|
"properties": {
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"total_dirs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_files": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"location_id",
|
|
"total_dirs",
|
|
"total_files"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"IndexingCompleted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"IndexingFailed": {
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"location_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"IndexingFailed"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"DeviceConnected": {
|
|
"properties": {
|
|
"device_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"device_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id",
|
|
"device_name"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"DeviceConnected"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"DeviceDisconnected": {
|
|
"properties": {
|
|
"device_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"DeviceDisconnected"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LocationAdded": {
|
|
"properties": {
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"library_id",
|
|
"location_id",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LocationAdded"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LocationRemoved": {
|
|
"properties": {
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"library_id",
|
|
"location_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LocationRemoved"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"FilesIndexed": {
|
|
"properties": {
|
|
"count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"count",
|
|
"library_id",
|
|
"location_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"FilesIndexed"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"ThumbnailsGenerated": {
|
|
"properties": {
|
|
"count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"count",
|
|
"library_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ThumbnailsGenerated"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"FileOperationCompleted": {
|
|
"properties": {
|
|
"affected_files": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"operation": {
|
|
"$ref": "#/definitions/FileOperation"
|
|
}
|
|
},
|
|
"required": [
|
|
"affected_files",
|
|
"library_id",
|
|
"operation"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"FileOperationCompleted"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"FilesModified": {
|
|
"properties": {
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"paths": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"library_id",
|
|
"paths"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"FilesModified"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"LogMessage": {
|
|
"properties": {
|
|
"job_id": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"level": {
|
|
"type": "string"
|
|
},
|
|
"library_id": {
|
|
"format": "uuid",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"type": "string"
|
|
},
|
|
"timestamp": {
|
|
"format": "date-time",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"level",
|
|
"message",
|
|
"target",
|
|
"timestamp"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"LogMessage"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Custom": {
|
|
"properties": {
|
|
"data": true,
|
|
"event_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"event_type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Custom"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "Event"
|
|
},
|
|
"FileCopyActionOutput": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Output from file copy action dispatch",
|
|
"properties": {
|
|
"destination": {
|
|
"type": "string"
|
|
},
|
|
"job_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"sources_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"destination",
|
|
"job_id",
|
|
"sources_count"
|
|
],
|
|
"title": "FileCopyActionOutput",
|
|
"type": "object"
|
|
},
|
|
"FileOperation": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Types of file operations",
|
|
"enum": [
|
|
"Copy",
|
|
"Move",
|
|
"Delete",
|
|
"Rename"
|
|
],
|
|
"title": "FileOperation",
|
|
"type": "string"
|
|
},
|
|
"FileSystem": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Represents the filesystem type of the volume",
|
|
"oneOf": [
|
|
{
|
|
"description": "Windows NTFS filesystem",
|
|
"enum": [
|
|
"NTFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "FAT32 filesystem",
|
|
"enum": [
|
|
"FAT32"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Linux EXT4 filesystem",
|
|
"enum": [
|
|
"EXT4"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Apple APFS filesystem",
|
|
"enum": [
|
|
"APFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ExFAT filesystem",
|
|
"enum": [
|
|
"ExFAT"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Btrfs filesystem (Linux)",
|
|
"enum": [
|
|
"Btrfs"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ZFS filesystem",
|
|
"enum": [
|
|
"ZFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Windows ReFS filesystem",
|
|
"enum": [
|
|
"ReFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other/unknown filesystem type",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "FileSystem"
|
|
},
|
|
"FsRawEventKind": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Raw filesystem event kinds emitted by the watcher without DB resolution",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Create": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Create"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Modify": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Modify"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Remove": {
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Remove"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"Rename": {
|
|
"properties": {
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"to": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"from",
|
|
"to"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Rename"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "FsRawEventKind"
|
|
},
|
|
"GenericProgress": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PerformanceMetrics": {
|
|
"description": "Performance and timing metrics",
|
|
"properties": {
|
|
"elapsed": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Time elapsed since start"
|
|
},
|
|
"error_count": {
|
|
"description": "Number of errors encountered",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"estimated_remaining": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Estimated time remaining"
|
|
},
|
|
"rate": {
|
|
"description": "Processing rate (items per second)",
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"warning_count": {
|
|
"description": "Number of warnings",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"error_count",
|
|
"rate",
|
|
"warning_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ProgressCompletion": {
|
|
"description": "Progress completion information",
|
|
"properties": {
|
|
"bytes_completed": {
|
|
"description": "Bytes processed (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"completed": {
|
|
"description": "Items completed (files, entries, operations, etc.)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"description": "Total items to complete",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"description": "Total bytes to process (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"completed",
|
|
"total"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SdPath": {
|
|
"description": "A path within the Spacedrive Virtual Distributed File System\n\nThis is the core abstraction that enables cross-device operations. An SdPath can represent: - A physical file at a specific path on a specific device - A content-addressed file that can be sourced from any device\n\nThis enum-based approach enables resilient file operations by allowing content-based paths to be resolved to optimal physical locations at runtime.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "A direct pointer to a file at a specific path on a specific device",
|
|
"properties": {
|
|
"Physical": {
|
|
"properties": {
|
|
"device_id": {
|
|
"description": "The device where this file exists",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "The local path on that device",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Physical"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "An abstract, location-independent handle that refers to file content",
|
|
"properties": {
|
|
"Content": {
|
|
"properties": {
|
|
"content_id": {
|
|
"description": "The unique content identifier",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Content"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "Generic progress information that all job types can convert into",
|
|
"properties": {
|
|
"completion": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ProgressCompletion"
|
|
}
|
|
],
|
|
"description": "Completion metrics"
|
|
},
|
|
"current_path": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SdPath"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Current path being processed (if applicable)"
|
|
},
|
|
"message": {
|
|
"description": "Human-readable message describing current activity",
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"description": "Extended metadata specific to job type"
|
|
},
|
|
"percentage": {
|
|
"description": "Current progress as a percentage (0.0 to 1.0)",
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"performance": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/PerformanceMetrics"
|
|
}
|
|
],
|
|
"description": "Performance metrics"
|
|
},
|
|
"phase": {
|
|
"description": "Current phase or stage name (e.g., \"Discovery\", \"Processing\", \"Finalizing\")",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"completion",
|
|
"message",
|
|
"metadata",
|
|
"percentage",
|
|
"performance",
|
|
"phase"
|
|
],
|
|
"title": "GenericProgress",
|
|
"type": "object"
|
|
},
|
|
"IndexerMetrics": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"description": "Comprehensive metrics for indexing operations",
|
|
"properties": {
|
|
"avg_batch_size": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"avg_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"batch_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"bytes_per_second": {
|
|
"format": "double",
|
|
"type": "number"
|
|
},
|
|
"content_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_reads": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_writes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"discovery_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"files_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"non_critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"peak_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"processing_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"skipped_paths": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"total_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"avg_batch_size",
|
|
"batch_count",
|
|
"bytes_per_second",
|
|
"content_duration",
|
|
"critical_errors",
|
|
"db_reads",
|
|
"db_writes",
|
|
"dirs_per_second",
|
|
"discovery_duration",
|
|
"files_per_second",
|
|
"non_critical_errors",
|
|
"processing_duration",
|
|
"skipped_paths",
|
|
"total_duration",
|
|
"total_errors"
|
|
],
|
|
"title": "IndexerMetrics",
|
|
"type": "object"
|
|
},
|
|
"IndexerStats": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Statistics collected during indexing",
|
|
"properties": {
|
|
"bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"files": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"skipped": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"symlinks": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"bytes",
|
|
"dirs",
|
|
"errors",
|
|
"files",
|
|
"skipped",
|
|
"symlinks"
|
|
],
|
|
"title": "IndexerStats",
|
|
"type": "object"
|
|
},
|
|
"JobInfoOutput": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"JobStatus": {
|
|
"description": "Current status of a job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job is waiting to be executed",
|
|
"enum": [
|
|
"queued"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job is currently running",
|
|
"enum": [
|
|
"running"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job has been paused",
|
|
"enum": [
|
|
"paused"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job completed successfully",
|
|
"enum": [
|
|
"completed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job failed with an error",
|
|
"enum": [
|
|
"failed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job was cancelled",
|
|
"enum": [
|
|
"cancelled"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"properties": {
|
|
"completed_at": {
|
|
"format": "date-time",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"error_message": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"progress": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"started_at": {
|
|
"format": "date-time",
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/JobStatus"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"progress",
|
|
"started_at",
|
|
"status"
|
|
],
|
|
"title": "JobInfoOutput",
|
|
"type": "object"
|
|
},
|
|
"JobListItem": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"JobStatus": {
|
|
"description": "Current status of a job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job is waiting to be executed",
|
|
"enum": [
|
|
"queued"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job is currently running",
|
|
"enum": [
|
|
"running"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job has been paused",
|
|
"enum": [
|
|
"paused"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job completed successfully",
|
|
"enum": [
|
|
"completed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job failed with an error",
|
|
"enum": [
|
|
"failed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job was cancelled",
|
|
"enum": [
|
|
"cancelled"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"properties": {
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"progress": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/JobStatus"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"progress",
|
|
"status"
|
|
],
|
|
"title": "JobListItem",
|
|
"type": "object"
|
|
},
|
|
"JobListOutput": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"JobListItem": {
|
|
"properties": {
|
|
"id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"progress": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/JobStatus"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"progress",
|
|
"status"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"JobStatus": {
|
|
"description": "Current status of a job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job is waiting to be executed",
|
|
"enum": [
|
|
"queued"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job is currently running",
|
|
"enum": [
|
|
"running"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job has been paused",
|
|
"enum": [
|
|
"paused"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job completed successfully",
|
|
"enum": [
|
|
"completed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job failed with an error",
|
|
"enum": [
|
|
"failed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job was cancelled",
|
|
"enum": [
|
|
"cancelled"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"properties": {
|
|
"jobs": {
|
|
"items": {
|
|
"$ref": "#/definitions/JobListItem"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"jobs"
|
|
],
|
|
"title": "JobListOutput",
|
|
"type": "object"
|
|
},
|
|
"JobOutput": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"IndexerMetrics": {
|
|
"description": "Comprehensive metrics for indexing operations",
|
|
"properties": {
|
|
"avg_batch_size": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"avg_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"batch_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"bytes_per_second": {
|
|
"format": "double",
|
|
"type": "number"
|
|
},
|
|
"content_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_reads": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"db_writes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"discovery_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"files_per_second": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"non_critical_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"peak_memory_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"processing_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"skipped_paths": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_duration": {
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
"total_errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"avg_batch_size",
|
|
"batch_count",
|
|
"bytes_per_second",
|
|
"content_duration",
|
|
"critical_errors",
|
|
"db_reads",
|
|
"db_writes",
|
|
"dirs_per_second",
|
|
"discovery_duration",
|
|
"files_per_second",
|
|
"non_critical_errors",
|
|
"processing_duration",
|
|
"skipped_paths",
|
|
"total_duration",
|
|
"total_errors"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"IndexerStats": {
|
|
"description": "Statistics collected during indexing",
|
|
"properties": {
|
|
"bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"dirs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"errors": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"files": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"skipped": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"symlinks": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"bytes",
|
|
"dirs",
|
|
"errors",
|
|
"files",
|
|
"skipped",
|
|
"symlinks"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"description": "Output from a completed job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job completed successfully with no specific output",
|
|
"properties": {
|
|
"type": {
|
|
"enum": [
|
|
"Success"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File copy job output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"copied_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"copied_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileCopy"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Indexer job output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"metrics": {
|
|
"$ref": "#/definitions/IndexerMetrics"
|
|
},
|
|
"stats": {
|
|
"$ref": "#/definitions/IndexerStats"
|
|
}
|
|
},
|
|
"required": [
|
|
"metrics",
|
|
"stats"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Indexed"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Thumbnail generation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"generated_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"failed_count",
|
|
"generated_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"ThumbnailsGenerated"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Thumbnail generation output (detailed)",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"error_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"generated_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"skipped_count": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_size_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"error_count",
|
|
"generated_count",
|
|
"skipped_count",
|
|
"total_size_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"ThumbnailGeneration"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File move/rename operation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"moved_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"failed_count",
|
|
"moved_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileMove"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File delete operation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"deleted_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"failed_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"deleted_count",
|
|
"failed_count",
|
|
"total_bytes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileDelete"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Duplicate detection output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"duplicate_groups": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"potential_savings": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_duplicates": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"duplicate_groups",
|
|
"potential_savings",
|
|
"total_duplicates"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"DuplicateDetection"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "File validation output",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"issues_found": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes_validated": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"validated_count": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"issues_found",
|
|
"total_bytes_validated",
|
|
"validated_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"FileValidation"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Generic output with custom data",
|
|
"properties": {
|
|
"data": true,
|
|
"type": {
|
|
"enum": [
|
|
"Custom"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "JobOutput"
|
|
},
|
|
"JobStatus": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Current status of a job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Job is waiting to be executed",
|
|
"enum": [
|
|
"queued"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job is currently running",
|
|
"enum": [
|
|
"running"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job has been paused",
|
|
"enum": [
|
|
"paused"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job completed successfully",
|
|
"enum": [
|
|
"completed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job failed with an error",
|
|
"enum": [
|
|
"failed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Job was cancelled",
|
|
"enum": [
|
|
"cancelled"
|
|
],
|
|
"type": "string"
|
|
}
|
|
],
|
|
"title": "JobStatus"
|
|
},
|
|
"LibraryInfo": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"LibraryStatistics": {
|
|
"description": "Library statistics",
|
|
"properties": {
|
|
"last_indexed": {
|
|
"description": "Last time the library was fully indexed",
|
|
"format": "date-time",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"location_count": {
|
|
"description": "Number of locations in this library",
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"tag_count": {
|
|
"description": "Number of tags created",
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"thumbnail_count": {
|
|
"description": "Number of thumbnails generated",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_files": {
|
|
"description": "Total number of files indexed",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_size": {
|
|
"description": "Total size of all files in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"updated_at": {
|
|
"description": "When these statistics were last updated",
|
|
"format": "date-time",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"location_count",
|
|
"tag_count",
|
|
"thumbnail_count",
|
|
"total_files",
|
|
"total_size",
|
|
"updated_at"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"description": "Information about a library for listing purposes",
|
|
"properties": {
|
|
"id": {
|
|
"description": "Library unique identifier",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Human-readable library name",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "Path to the library directory",
|
|
"type": "string"
|
|
},
|
|
"stats": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/LibraryStatistics"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Optional statistics if requested"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"path"
|
|
],
|
|
"title": "LibraryInfo",
|
|
"type": "object"
|
|
},
|
|
"LocationAddOutput": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Output from location add action dispatch",
|
|
"properties": {
|
|
"job_id": {
|
|
"format": "uuid",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"location_id": {
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"location_id",
|
|
"path"
|
|
],
|
|
"title": "LocationAddOutput",
|
|
"type": "object"
|
|
},
|
|
"MountType": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Represents how the volume is mounted in the system",
|
|
"oneOf": [
|
|
{
|
|
"description": "System/boot volume",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External/removable volume",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network-attached volume",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Virtual/container volume",
|
|
"enum": [
|
|
"Virtual"
|
|
],
|
|
"type": "string"
|
|
}
|
|
],
|
|
"title": "MountType"
|
|
},
|
|
"PathMapping": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Path mapping for resolving virtual paths to actual storage locations",
|
|
"properties": {
|
|
"actual_path": {
|
|
"description": "Actual storage path (e.g., \"/System/Volumes/Data/Users\")",
|
|
"type": "string"
|
|
},
|
|
"virtual_path": {
|
|
"description": "Virtual path (e.g., \"/Users\")",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"actual_path",
|
|
"virtual_path"
|
|
],
|
|
"title": "PathMapping",
|
|
"type": "object"
|
|
},
|
|
"PerformanceMetrics": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"description": "Performance and timing metrics",
|
|
"properties": {
|
|
"elapsed": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Time elapsed since start"
|
|
},
|
|
"error_count": {
|
|
"description": "Number of errors encountered",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"estimated_remaining": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Estimated time remaining"
|
|
},
|
|
"rate": {
|
|
"description": "Processing rate (items per second)",
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"warning_count": {
|
|
"description": "Number of warnings",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"error_count",
|
|
"rate",
|
|
"warning_count"
|
|
],
|
|
"title": "PerformanceMetrics",
|
|
"type": "object"
|
|
},
|
|
"Progress": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"Duration": {
|
|
"properties": {
|
|
"nanos": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"secs": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"nanos",
|
|
"secs"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"GenericProgress": {
|
|
"description": "Generic progress information that all job types can convert into",
|
|
"properties": {
|
|
"completion": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ProgressCompletion"
|
|
}
|
|
],
|
|
"description": "Completion metrics"
|
|
},
|
|
"current_path": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SdPath"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Current path being processed (if applicable)"
|
|
},
|
|
"message": {
|
|
"description": "Human-readable message describing current activity",
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"description": "Extended metadata specific to job type"
|
|
},
|
|
"percentage": {
|
|
"description": "Current progress as a percentage (0.0 to 1.0)",
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"performance": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/PerformanceMetrics"
|
|
}
|
|
],
|
|
"description": "Performance metrics"
|
|
},
|
|
"phase": {
|
|
"description": "Current phase or stage name (e.g., \"Discovery\", \"Processing\", \"Finalizing\")",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"completion",
|
|
"message",
|
|
"metadata",
|
|
"percentage",
|
|
"performance",
|
|
"phase"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PerformanceMetrics": {
|
|
"description": "Performance and timing metrics",
|
|
"properties": {
|
|
"elapsed": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Time elapsed since start"
|
|
},
|
|
"error_count": {
|
|
"description": "Number of errors encountered",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"estimated_remaining": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Duration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Estimated time remaining"
|
|
},
|
|
"rate": {
|
|
"description": "Processing rate (items per second)",
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"warning_count": {
|
|
"description": "Number of warnings",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"error_count",
|
|
"rate",
|
|
"warning_count"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ProgressCompletion": {
|
|
"description": "Progress completion information",
|
|
"properties": {
|
|
"bytes_completed": {
|
|
"description": "Bytes processed (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"completed": {
|
|
"description": "Items completed (files, entries, operations, etc.)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"description": "Total items to complete",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"description": "Total bytes to process (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"completed",
|
|
"total"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"SdPath": {
|
|
"description": "A path within the Spacedrive Virtual Distributed File System\n\nThis is the core abstraction that enables cross-device operations. An SdPath can represent: - A physical file at a specific path on a specific device - A content-addressed file that can be sourced from any device\n\nThis enum-based approach enables resilient file operations by allowing content-based paths to be resolved to optimal physical locations at runtime.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "A direct pointer to a file at a specific path on a specific device",
|
|
"properties": {
|
|
"Physical": {
|
|
"properties": {
|
|
"device_id": {
|
|
"description": "The device where this file exists",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "The local path on that device",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Physical"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "An abstract, location-independent handle that refers to file content",
|
|
"properties": {
|
|
"Content": {
|
|
"properties": {
|
|
"content_id": {
|
|
"description": "The unique content identifier",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Content"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "Progress information for a job",
|
|
"oneOf": [
|
|
{
|
|
"description": "Simple count-based progress",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"current": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"format": "uint",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"current",
|
|
"total"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Count"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Percentage-based progress (0.0 to 1.0)",
|
|
"properties": {
|
|
"data": {
|
|
"format": "float",
|
|
"type": "number"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Percentage"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Indeterminate progress with a message",
|
|
"properties": {
|
|
"data": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Indeterminate"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Bytes-based progress",
|
|
"properties": {
|
|
"data": {
|
|
"properties": {
|
|
"current": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"current",
|
|
"total"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Bytes"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Custom structured progress",
|
|
"properties": {
|
|
"data": true,
|
|
"type": {
|
|
"enum": [
|
|
"Structured"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Generic progress (recommended for all jobs)",
|
|
"properties": {
|
|
"data": {
|
|
"$ref": "#/definitions/GenericProgress"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"Generic"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"type"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "Progress"
|
|
},
|
|
"ProgressCompletion": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Progress completion information",
|
|
"properties": {
|
|
"bytes_completed": {
|
|
"description": "Bytes processed (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"completed": {
|
|
"description": "Items completed (files, entries, operations, etc.)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"description": "Total items to complete",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes": {
|
|
"description": "Total bytes to process (if applicable)",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"completed",
|
|
"total"
|
|
],
|
|
"title": "ProgressCompletion",
|
|
"type": "object"
|
|
},
|
|
"SdPath": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "A path within the Spacedrive Virtual Distributed File System\n\nThis is the core abstraction that enables cross-device operations. An SdPath can represent: - A physical file at a specific path on a specific device - A content-addressed file that can be sourced from any device\n\nThis enum-based approach enables resilient file operations by allowing content-based paths to be resolved to optimal physical locations at runtime.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "A direct pointer to a file at a specific path on a specific device",
|
|
"properties": {
|
|
"Physical": {
|
|
"properties": {
|
|
"device_id": {
|
|
"description": "The device where this file exists",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "The local path on that device",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Physical"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "An abstract, location-independent handle that refers to file content",
|
|
"properties": {
|
|
"Content": {
|
|
"properties": {
|
|
"content_id": {
|
|
"description": "The unique content identifier",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Content"
|
|
],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "SdPath"
|
|
},
|
|
"SdPathBatch": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"SdPath": {
|
|
"description": "A path within the Spacedrive Virtual Distributed File System\n\nThis is the core abstraction that enables cross-device operations. An SdPath can represent: - A physical file at a specific path on a specific device - A content-addressed file that can be sourced from any device\n\nThis enum-based approach enables resilient file operations by allowing content-based paths to be resolved to optimal physical locations at runtime.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "A direct pointer to a file at a specific path on a specific device",
|
|
"properties": {
|
|
"Physical": {
|
|
"properties": {
|
|
"device_id": {
|
|
"description": "The device where this file exists",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "The local path on that device",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"device_id",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Physical"
|
|
],
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "An abstract, location-independent handle that refers to file content",
|
|
"properties": {
|
|
"Content": {
|
|
"properties": {
|
|
"content_id": {
|
|
"description": "The unique content identifier",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content_id"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"Content"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "A batch of SdPaths, useful for operations on multiple files",
|
|
"properties": {
|
|
"paths": {
|
|
"items": {
|
|
"$ref": "#/definitions/SdPath"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
],
|
|
"title": "SdPathBatch",
|
|
"type": "object"
|
|
},
|
|
"Volume": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"ApfsContainer": {
|
|
"description": "Represents an APFS container (physical storage with multiple volumes)",
|
|
"properties": {
|
|
"capacity_free": {
|
|
"description": "Capacity not allocated in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"capacity_in_use": {
|
|
"description": "Capacity in use by all volumes in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"container_id": {
|
|
"description": "Container identifier (e.g., \"disk3\")",
|
|
"type": "string"
|
|
},
|
|
"physical_store": {
|
|
"description": "Physical store device (e.g., \"disk0s2\")",
|
|
"type": "string"
|
|
},
|
|
"total_capacity": {
|
|
"description": "Total container capacity in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"uuid": {
|
|
"description": "Container UUID",
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"description": "All volumes in this container",
|
|
"items": {
|
|
"$ref": "#/definitions/ApfsVolumeInfo"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_free",
|
|
"capacity_in_use",
|
|
"container_id",
|
|
"physical_store",
|
|
"total_capacity",
|
|
"uuid",
|
|
"volumes"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeInfo": {
|
|
"description": "APFS volume information within a container",
|
|
"properties": {
|
|
"capacity_consumed": {
|
|
"description": "Capacity consumed by this volume in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"disk_id": {
|
|
"description": "Volume disk identifier (e.g., \"disk3s5\")",
|
|
"type": "string"
|
|
},
|
|
"filevault": {
|
|
"description": "Whether FileVault is enabled",
|
|
"type": "boolean"
|
|
},
|
|
"mount_point": {
|
|
"description": "Mount point (if mounted)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Volume name",
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsVolumeRole"
|
|
}
|
|
],
|
|
"description": "Volume role (System, Data, Preboot, etc.)"
|
|
},
|
|
"sealed": {
|
|
"description": "Whether the volume is sealed",
|
|
"type": "boolean"
|
|
},
|
|
"uuid": {
|
|
"description": "Volume UUID",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capacity_consumed",
|
|
"disk_id",
|
|
"filevault",
|
|
"name",
|
|
"role",
|
|
"sealed",
|
|
"uuid"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ApfsVolumeRole": {
|
|
"description": "APFS volume roles in the container",
|
|
"oneOf": [
|
|
{
|
|
"description": "System volume (read-only system files)",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Data volume (user data and applications)",
|
|
"enum": [
|
|
"Data"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Preboot volume (boot support files)",
|
|
"enum": [
|
|
"Preboot"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Recovery volume (recovery environment)",
|
|
"enum": [
|
|
"Recovery"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "VM volume (virtual memory)",
|
|
"enum": [
|
|
"VM"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other role or no specific role",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"DiskType": {
|
|
"description": "Represents the type of physical storage device",
|
|
"oneOf": [
|
|
{
|
|
"description": "Solid State Drive",
|
|
"enum": [
|
|
"SSD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Hard Disk Drive",
|
|
"enum": [
|
|
"HDD"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or virtual disk type",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"FileSystem": {
|
|
"description": "Represents the filesystem type of the volume",
|
|
"oneOf": [
|
|
{
|
|
"description": "Windows NTFS filesystem",
|
|
"enum": [
|
|
"NTFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "FAT32 filesystem",
|
|
"enum": [
|
|
"FAT32"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Linux EXT4 filesystem",
|
|
"enum": [
|
|
"EXT4"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Apple APFS filesystem",
|
|
"enum": [
|
|
"APFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ExFAT filesystem",
|
|
"enum": [
|
|
"ExFAT"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Btrfs filesystem (Linux)",
|
|
"enum": [
|
|
"Btrfs"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "ZFS filesystem",
|
|
"enum": [
|
|
"ZFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Windows ReFS filesystem",
|
|
"enum": [
|
|
"ReFS"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Other/unknown filesystem type",
|
|
"properties": {
|
|
"Other": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"Other"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"MountType": {
|
|
"description": "Represents how the volume is mounted in the system",
|
|
"oneOf": [
|
|
{
|
|
"description": "System/boot volume",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External/removable volume",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network-attached volume",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Virtual/container volume",
|
|
"enum": [
|
|
"Virtual"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"PathMapping": {
|
|
"description": "Path mapping for resolving virtual paths to actual storage locations",
|
|
"properties": {
|
|
"actual_path": {
|
|
"description": "Actual storage path (e.g., \"/System/Volumes/Data/Users\")",
|
|
"type": "string"
|
|
},
|
|
"virtual_path": {
|
|
"description": "Virtual path (e.g., \"/Users\")",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"actual_path",
|
|
"virtual_path"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"VolumeFingerprint": {
|
|
"description": "Unique fingerprint for a storage volume",
|
|
"type": "string"
|
|
},
|
|
"VolumeType": {
|
|
"description": "Classification of volume types for UX and auto-tracking decisions",
|
|
"oneOf": [
|
|
{
|
|
"description": "Primary system drive containing OS and user data Examples: C:\\ on Windows, / on Linux, Macintosh HD on macOS",
|
|
"enum": [
|
|
"Primary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Dedicated user data volumes (separate from OS) Examples: /System/Volumes/Data on macOS, separate /home on Linux",
|
|
"enum": [
|
|
"UserData"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External or removable storage devices Examples: USB drives, external HDDs, /Volumes/* on macOS",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Secondary internal storage (additional drives/partitions) Examples: D:, E: drives on Windows, additional mounted drives",
|
|
"enum": [
|
|
"Secondary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "System/OS internal volumes (hidden from normal view) Examples: /System/Volumes/* on macOS, Recovery partitions",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network attached storage Examples: SMB mounts, NFS, cloud storage",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or unclassified volumes",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"description": "Represents a physical or virtual storage volume in the system",
|
|
"properties": {
|
|
"apfs_container": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ApfsContainer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "APFS container information (macOS only)"
|
|
},
|
|
"auto_track_eligible": {
|
|
"description": "Whether this volume should be auto-tracked",
|
|
"type": "boolean"
|
|
},
|
|
"container_volume_id": {
|
|
"description": "Container-relative volume ID for same-container detection",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"device_id": {
|
|
"description": "Device this volume belongs to",
|
|
"format": "uuid",
|
|
"type": "string"
|
|
},
|
|
"disk_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/DiskType"
|
|
}
|
|
],
|
|
"description": "Type of storage device (SSD, HDD, etc)"
|
|
},
|
|
"error_status": {
|
|
"description": "Current error status if any",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"file_system": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/FileSystem"
|
|
}
|
|
],
|
|
"description": "Filesystem type (NTFS, EXT4, etc)"
|
|
},
|
|
"fingerprint": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/VolumeFingerprint"
|
|
}
|
|
],
|
|
"description": "Unique fingerprint for this volume"
|
|
},
|
|
"hardware_id": {
|
|
"description": "Hardware identifier (platform-specific)",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"is_mounted": {
|
|
"description": "Whether the volume is currently mounted",
|
|
"type": "boolean"
|
|
},
|
|
"is_user_visible": {
|
|
"description": "Whether this volume should be visible in default views",
|
|
"type": "boolean"
|
|
},
|
|
"last_updated": {
|
|
"description": "When this volume information was last updated",
|
|
"format": "date-time",
|
|
"type": "string"
|
|
},
|
|
"mount_point": {
|
|
"description": "Primary path where the volume is mounted",
|
|
"type": "string"
|
|
},
|
|
"mount_points": {
|
|
"description": "Additional mount points (for APFS volumes, etc.)",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"mount_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/MountType"
|
|
}
|
|
],
|
|
"description": "Type of mount (system, external, etc)"
|
|
},
|
|
"name": {
|
|
"description": "Human-readable volume name",
|
|
"type": "string"
|
|
},
|
|
"path_mappings": {
|
|
"description": "Path resolution mappings (for firmlinks/symlinks)",
|
|
"items": {
|
|
"$ref": "#/definitions/PathMapping"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"read_only": {
|
|
"description": "Whether the volume is mounted read-only",
|
|
"type": "boolean"
|
|
},
|
|
"read_speed_mbps": {
|
|
"description": "Read speed in megabytes per second",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"total_bytes_available": {
|
|
"description": "Available storage space in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"total_bytes_capacity": {
|
|
"description": "Total storage capacity in bytes",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"volume_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/VolumeType"
|
|
}
|
|
],
|
|
"description": "Classification of this volume for UX decisions"
|
|
},
|
|
"write_speed_mbps": {
|
|
"description": "Write speed in megabytes per second",
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"auto_track_eligible",
|
|
"device_id",
|
|
"disk_type",
|
|
"file_system",
|
|
"fingerprint",
|
|
"is_mounted",
|
|
"is_user_visible",
|
|
"last_updated",
|
|
"mount_point",
|
|
"mount_points",
|
|
"mount_type",
|
|
"name",
|
|
"path_mappings",
|
|
"read_only",
|
|
"total_bytes_available",
|
|
"total_bytes_capacity",
|
|
"volume_type"
|
|
],
|
|
"title": "Volume",
|
|
"type": "object"
|
|
},
|
|
"VolumeFingerprint": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Unique fingerprint for a storage volume",
|
|
"title": "VolumeFingerprint",
|
|
"type": "string"
|
|
},
|
|
"VolumeInfo": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Summary information about a volume (for updates and caching)",
|
|
"properties": {
|
|
"error_status": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"is_mounted": {
|
|
"type": "boolean"
|
|
},
|
|
"read_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"total_bytes_available": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"write_speed_mbps": {
|
|
"format": "uint64",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"is_mounted",
|
|
"total_bytes_available"
|
|
],
|
|
"title": "VolumeInfo",
|
|
"type": "object"
|
|
},
|
|
"VolumeType": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "Classification of volume types for UX and auto-tracking decisions",
|
|
"oneOf": [
|
|
{
|
|
"description": "Primary system drive containing OS and user data Examples: C:\\ on Windows, / on Linux, Macintosh HD on macOS",
|
|
"enum": [
|
|
"Primary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Dedicated user data volumes (separate from OS) Examples: /System/Volumes/Data on macOS, separate /home on Linux",
|
|
"enum": [
|
|
"UserData"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "External or removable storage devices Examples: USB drives, external HDDs, /Volumes/* on macOS",
|
|
"enum": [
|
|
"External"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Secondary internal storage (additional drives/partitions) Examples: D:, E: drives on Windows, additional mounted drives",
|
|
"enum": [
|
|
"Secondary"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "System/OS internal volumes (hidden from normal view) Examples: /System/Volumes/* on macOS, Recovery partitions",
|
|
"enum": [
|
|
"System"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Network attached storage Examples: SMB mounts, NFS, cloud storage",
|
|
"enum": [
|
|
"Network"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Unknown or unclassified volumes",
|
|
"enum": [
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
}
|
|
],
|
|
"title": "VolumeType"
|
|
}
|
|
}
|
|
} |