{
	"components": {
		"schemas": {
			"APIKeyCreateDto": {
				"description": "APIKeyCreateDto schema",
				"properties": {
					"name": {
						"type": "string"
					},
					"permissions": {
						"items": {
							"$ref": "#/components/schemas/Permission"
						},
						"type": "array"
					}
				},
				"required": [
					"permissions"
				],
				"type": "object"
			},
			"APIKeyCreateResponseDto": {
				"description": "APIKeyCreateResponseDto schema",
				"properties": {
					"apiKey": {
						"$ref": "#/components/schemas/APIKeyResponseDto"
					},
					"secret": {
						"type": "string"
					}
				},
				"required": [
					"apiKey",
					"secret"
				],
				"type": "object"
			},
			"APIKeyResponseDto": {
				"properties": {
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"permissions": {
						"items": {
							"$ref": "#/components/schemas/Permission"
						},
						"type": "array"
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"createdAt",
					"id",
					"name",
					"permissions",
					"updatedAt"
				],
				"type": "object"
			},
			"APIKeyUpdateDto": {
				"description": "APIKeyUpdateDto schema",
				"properties": {
					"name": {
						"type": [
							"string",
							"null"
						]
					},
					"permissions": {
						"items": {
							"$ref": "#/components/schemas/Permission"
						},
						"type": "array"
					}
				},
				"type": "object"
			},
			"AccessDto": {
				"properties": {
					"delete": {
						"type": "boolean"
					},
					"download": {
						"type": "boolean"
					},
					"edit": {
						"type": "boolean"
					}
				},
				"required": [
					"delete",
					"download",
					"edit"
				],
				"type": "object"
			},
			"AppInstallProgressDto": {
				"properties": {
					"message": {
						"type": "string"
					},
					"percent": {
						"type": "integer"
					},
					"step": {
						"type": "string"
					}
				},
				"required": [
					"percent",
					"step"
				],
				"type": "object"
			},
			"AppInstallResponseDto": {
				"description": "AppInstallResponseDto schema",
				"properties": {
					"id": {
						"type": "string"
					},
					"message": {
						"type": "string"
					},
					"status": {
						"$ref": "#/components/schemas/AppStatus"
					}
				},
				"required": [
					"id",
					"message",
					"status"
				],
				"type": "object"
			},
			"AppResponseDto": {
				"description": "AppResponseDto schema",
				"properties": {
					"description": {
						"type": "string"
					},
					"developer": {
						"type": [
							"string",
							"null"
						]
					},
					"iconUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"sourceRepo": {
						"type": [
							"string",
							"null"
						]
					},
					"tagline": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					},
					"websiteUrl": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"description",
					"id",
					"name"
				],
				"type": "object"
			},
			"AppStatus": {
				"enum": [
					"not-installed",
					"installing",
					"installed",
					"starting",
					"running",
					"error"
				],
				"type": "string"
			},
			"AppStatusDto": {
				"description": "AppStatusDto schema",
				"properties": {
					"error": {
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"progress": {
						"$ref": "#/components/schemas/AppInstallProgressDto"
					},
					"status": {
						"$ref": "#/components/schemas/AppStatus"
					}
				},
				"required": [
					"id",
					"status"
				],
				"type": "object"
			},
			"AppTestResponseDto": {
				"description": "AppTestResponseDto schema",
				"properties": {
					"hostname": {
						"type": "string"
					},
					"id": {
						"type": "string"
					},
					"message": {
						"type": "string"
					},
					"receivedAt": {
						"type": "string"
					}
				},
				"required": [
					"hostname",
					"id",
					"message",
					"receivedAt"
				],
				"type": "object"
			},
			"AppliedComponentRecordDto": {
				"properties": {
					"digest": {
						"type": [
							"string",
							"null"
						]
					},
					"kind": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"AppliedUpdateResponseDto": {
				"properties": {
					"appliedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"components": {
						"additionalProperties": {
							"$ref": "#/components/schemas/AppliedComponentRecordDto"
						},
						"type": [
							"object",
							"null"
						]
					},
					"notes": {
						"type": [
							"string",
							"null"
						]
					},
					"publishedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"ApplyOutcomeResponseDto": {
				"properties": {
					"agentRestartRequired": {
						"type": [
							"boolean",
							"null"
						]
					},
					"error": {
						"type": [
							"string",
							"null"
						]
					},
					"failedComponent": {
						"type": [
							"string",
							"null"
						]
					},
					"finishedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"rebootRequired": {
						"type": [
							"boolean",
							"null"
						]
					},
					"result": {
						"$ref": "#/components/schemas/UpdateResult"
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"AudioBalanceRequestDto": {
				"description": "AudioBalanceRequestDto schema",
				"properties": {
					"balance": {
						"maximum": 100,
						"minimum": -100,
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"balance"
				],
				"type": "object"
			},
			"AudioCodecDto": {
				"description": "Every compressed format the output's connection can carry.",
				"properties": {
					"enabled": {
						"description": "The output passes this format through.",
						"type": "boolean"
					},
					"immersive": {
						"$ref": "#/components/schemas/AudioImmersiveFormat"
					},
					"label": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"reported": {
						"description": "The connected device advertises this format.",
						"type": "boolean"
					}
				},
				"required": [
					"enabled",
					"label",
					"name",
					"reported"
				],
				"type": "object"
			},
			"AudioConnection": {
				"enum": [
					"hdmi",
					"other"
				],
				"type": "string"
			},
			"AudioDiagnosticsDto": {
				"properties": {
					"bitRate": {
						"format": "int64",
						"type": [
							"integer",
							"null"
						]
					},
					"channels": {
						"type": [
							"integer",
							"null"
						]
					},
					"codec": {
						"type": [
							"string",
							"null"
						]
					},
					"sampleRate": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"type": "object"
			},
			"AudioFormatMode": {
				"enum": [
					"auto",
					"pcm",
					"custom"
				],
				"type": "string"
			},
			"AudioFormatsDto": {
				"properties": {
					"codecs": {
						"description": "Every compressed format the output's connection can carry.",
						"items": {
							"$ref": "#/components/schemas/AudioCodecDto"
						},
						"type": "array"
					},
					"mode": {
						"$ref": "#/components/schemas/AudioFormatMode"
					}
				},
				"required": [
					"codecs",
					"mode"
				],
				"type": "object"
			},
			"AudioFormatsRequestDto": {
				"description": "AudioFormatsRequestDto schema",
				"properties": {
					"codecs": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"mode": {
						"$ref": "#/components/schemas/AudioFormatMode"
					}
				},
				"required": [
					"mode"
				],
				"type": "object"
			},
			"AudioImmersiveFormat": {
				"enum": [
					"dolby-atmos",
					"dts-x"
				],
				"type": "string"
			},
			"AudioLayoutDto": {
				"properties": {
					"available": {
						"description": "Something is plugged into the layout's connector.",
						"type": "boolean"
					},
					"label": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"supported": {
						"description": "False when the connected device reports too few channels for the layout.",
						"type": "boolean"
					}
				},
				"required": [
					"available",
					"label",
					"name",
					"supported"
				],
				"type": "object"
			},
			"AudioLayoutRequestDto": {
				"description": "AudioLayoutRequestDto schema",
				"properties": {
					"layout": {
						"type": "string"
					}
				},
				"required": [
					"layout"
				],
				"type": "object"
			},
			"AudioMonoRequestDto": {
				"description": "AudioMonoRequestDto schema",
				"properties": {
					"mono": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"required": [
					"mono"
				],
				"type": "object"
			},
			"AudioOutputDto": {
				"properties": {
					"balance": {
						"description": "From -100 (left) to 100 (right); present only on 2-channel outputs.",
						"type": [
							"integer",
							"null"
						]
					},
					"connection": {
						"$ref": "#/components/schemas/AudioConnection"
					},
					"device": {
						"description": "The connected TV or receiver, when it reports its name.",
						"type": "string"
					},
					"formats": {
						"$ref": "#/components/schemas/AudioFormatsDto"
					},
					"label": {
						"type": "string"
					},
					"layout": {
						"description": "The selected channel layout, when the output's sound card has layouts.",
						"type": "string"
					},
					"layouts": {
						"items": {
							"$ref": "#/components/schemas/AudioLayoutDto"
						},
						"type": "array"
					},
					"maxChannels": {
						"description": "The most channels the connected device takes, when it reports it.",
						"type": [
							"integer",
							"null"
						]
					},
					"mute": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"port": {
						"description": "The selected connector, when the output has connectors.",
						"type": "string"
					},
					"ports": {
						"items": {
							"$ref": "#/components/schemas/AudioPortDto"
						},
						"type": "array"
					},
					"volume": {
						"type": "integer"
					}
				},
				"required": [
					"connection",
					"formats",
					"label",
					"layouts",
					"mute",
					"name",
					"ports",
					"volume"
				],
				"type": "object"
			},
			"AudioOutputRequestDto": {
				"description": "AudioOutputRequestDto schema",
				"properties": {
					"output": {
						"type": "string"
					},
					"port": {
						"type": "string"
					}
				},
				"required": [
					"output"
				],
				"type": "object"
			},
			"AudioPortDto": {
				"properties": {
					"connected": {
						"description": "Something is plugged into the connector.",
						"type": "boolean"
					},
					"label": {
						"type": "string"
					},
					"name": {
						"type": "string"
					}
				},
				"required": [
					"connected",
					"label",
					"name"
				],
				"type": "object"
			},
			"AudioStatusResponseDto": {
				"description": "AudioStatusResponseDto schema",
				"properties": {
					"defaultOutput": {
						"description": "The output sound plays through; empty when no output is connected.",
						"type": "string"
					},
					"mono": {
						"type": "boolean"
					},
					"outputs": {
						"items": {
							"$ref": "#/components/schemas/AudioOutputDto"
						},
						"type": "array"
					}
				},
				"required": [
					"defaultOutput",
					"mono",
					"outputs"
				],
				"type": "object"
			},
			"AudioVolumeRequestDto": {
				"description": "AudioVolumeRequestDto schema",
				"properties": {
					"volume": {
						"maximum": 100,
						"minimum": 0,
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"volume"
				],
				"type": "object"
			},
			"AuthStatusResponseDto": {
				"description": "AuthStatusResponseDto schema",
				"properties": {
					"authStatus": {
						"type": "boolean"
					}
				},
				"required": [
					"authStatus"
				],
				"type": "object"
			},
			"AvailableUpdateResponseDto": {
				"properties": {
					"components": {
						"items": {
							"$ref": "#/components/schemas/ComponentUpdateResponseDto"
						},
						"type": "array"
					},
					"notes": {
						"type": [
							"string",
							"null"
						]
					},
					"publishedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"securityFix": {
						"type": [
							"boolean",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"BreadcrumbDto": {
				"description": "BreadcrumbDto schema",
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"name"
				],
				"type": "object"
			},
			"CapabilitiesDto": {
				"properties": {
					"trash": {
						"type": "boolean"
					},
					"write": {
						"type": "boolean"
					}
				},
				"required": [
					"trash",
					"write"
				],
				"type": "object"
			},
			"CastPlaybackState": {
				"enum": [
					"idle",
					"playing",
					"paused"
				],
				"type": "string"
			},
			"CastSeekDto": {
				"description": "CastSeekDto schema",
				"properties": {
					"positionSeconds": {
						"format": "double",
						"type": "number"
					}
				},
				"required": [
					"positionSeconds"
				],
				"type": "object"
			},
			"CastSessionDto": {
				"description": "CastSessionDto schema",
				"properties": {
					"active": {
						"type": "boolean"
					},
					"addedSubtitles": {
						"items": {
							"$ref": "#/components/schemas/MediaSubtitleDto"
						},
						"type": "array"
					},
					"audioTrackIndex": {
						"type": [
							"integer",
							"null"
						]
					},
					"diagnostics": {
						"$ref": "#/components/schemas/MediaDiagnosticsDto"
					},
					"durationSeconds": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"mediaType": {
						"$ref": "#/components/schemas/MediaType"
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"positionSeconds": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					},
					"startedByUserId": {
						"type": [
							"string",
							"null"
						]
					},
					"state": {
						"$ref": "#/components/schemas/CastPlaybackState"
					},
					"subtitleFile": {
						"$ref": "#/components/schemas/MediaWatchProgressSourceDto"
					},
					"subtitleScale": {
						"format": "double",
						"type": "number"
					},
					"subtitleTrackIndex": {
						"type": [
							"integer",
							"null"
						]
					},
					"title": {
						"type": [
							"string",
							"null"
						]
					},
					"updatedAt": {
						"type": "string"
					}
				},
				"required": [
					"active",
					"addedSubtitles",
					"durationSeconds",
					"mediaType",
					"positionSeconds",
					"startedByUserId",
					"state",
					"subtitleScale",
					"title",
					"updatedAt"
				],
				"type": "object"
			},
			"CastStartDto": {
				"description": "CastStartDto schema",
				"properties": {
					"audioTrack": {
						"type": [
							"integer",
							"null"
						]
					},
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"resumePosition": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					},
					"subtitleFile": {
						"$ref": "#/components/schemas/MediaWatchProgressSourceDto"
					},
					"subtitleTrack": {
						"type": [
							"integer",
							"null"
						]
					},
					"subtitles": {
						"items": {
							"$ref": "#/components/schemas/MediaWatchProgressSourceDto"
						},
						"type": "array"
					}
				},
				"required": [
					"sourceType"
				],
				"type": "object"
			},
			"CastSubtitleAddDto": {
				"description": "CastSubtitleAddDto schema",
				"properties": {
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					}
				},
				"required": [
					"sourceType"
				],
				"type": "object"
			},
			"CastSubtitleScaleDto": {
				"description": "CastSubtitleScaleDto schema",
				"properties": {
					"scale": {
						"format": "double",
						"type": "number"
					}
				},
				"required": [
					"scale"
				],
				"type": "object"
			},
			"CastTrackDto": {
				"properties": {
					"index": {
						"type": "integer"
					},
					"language": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"index",
					"language",
					"title"
				],
				"type": "object"
			},
			"CastTrackSelectDto": {
				"description": "CastTrackSelectDto schema",
				"properties": {
					"index": {
						"type": "integer"
					}
				},
				"required": [
					"index"
				],
				"type": "object"
			},
			"CastTracksDto": {
				"description": "CastTracksDto schema",
				"properties": {
					"activeIndex": {
						"type": "integer"
					},
					"tracks": {
						"items": {
							"$ref": "#/components/schemas/CastTrackDto"
						},
						"type": "array"
					}
				},
				"required": [
					"activeIndex",
					"tracks"
				],
				"type": "object"
			},
			"ChangePasswordDto": {
				"description": "ChangePasswordDto schema",
				"properties": {
					"invalidateSessions": {
						"type": [
							"boolean",
							"null"
						]
					},
					"newPassword": {
						"minLength": 8,
						"type": "string"
					},
					"password": {
						"type": "string"
					}
				},
				"required": [
					"newPassword",
					"password"
				],
				"type": "object"
			},
			"CheckError": {
				"enum": [
					"unreachable",
					"generic"
				],
				"type": "string"
			},
			"CheckStatusResponseDto": {
				"properties": {
					"checkedAt": {
						"description": "When the last check finished; absent before the first check and after a manifest source change.",
						"type": [
							"string",
							"null"
						]
					},
					"error": {
						"$ref": "#/components/schemas/CheckError"
					},
					"running": {
						"description": "A check is running, or is due (after the agent starts or the manifest source changes) while no update applies.",
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"type": "object"
			},
			"CodedProblem": {
				"description": "CodedProblem schema",
				"properties": {
					"code": {
						"type": "string"
					},
					"detail": {
						"description": "Human readable error message",
						"type": "string"
					},
					"errors": {
						"items": {
							"$ref": "#/components/schemas/ErrorItem"
						},
						"type": "array"
					},
					"instance": {
						"type": "string"
					},
					"status": {
						"description": "HTTP status code",
						"example": 403,
						"type": "integer"
					},
					"title": {
						"description": "Short title of the error",
						"type": "string"
					},
					"type": {
						"description": "URL of the error type. Can be used to lookup the error in a documentation",
						"type": "string"
					}
				},
				"required": [
					"code"
				],
				"type": "object"
			},
			"ColorPointDto": {
				"properties": {
					"x": {
						"format": "double",
						"type": "number"
					},
					"y": {
						"format": "double",
						"type": "number"
					}
				},
				"required": [
					"x",
					"y"
				],
				"type": "object"
			},
			"ComponentUpdateResponseDto": {
				"properties": {
					"componentId": {
						"type": [
							"string",
							"null"
						]
					},
					"digest": {
						"type": [
							"string",
							"null"
						]
					},
					"releaseNotes": {
						"type": [
							"string",
							"null"
						]
					},
					"sizeBytes": {
						"type": [
							"integer",
							"null"
						]
					},
					"sourceUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"ConflictPolicy": {
				"enum": [
					"rename",
					"replace",
					"fail"
				],
				"type": "string"
			},
			"CurrentNetworkDto": {
				"description": "CurrentNetworkDto schema",
				"properties": {
					"network": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"DisplayModeDto": {
				"properties": {
					"height": {
						"minimum": 1,
						"type": "integer"
					},
					"refreshRate": {
						"minimum": 1,
						"type": "integer"
					},
					"width": {
						"minimum": 1,
						"type": "integer"
					}
				},
				"required": [
					"height",
					"refreshRate",
					"width"
				],
				"type": "object"
			},
			"DisplayPrimariesDto": {
				"properties": {
					"blue": {
						"$ref": "#/components/schemas/ColorPointDto"
					},
					"green": {
						"$ref": "#/components/schemas/ColorPointDto"
					},
					"red": {
						"$ref": "#/components/schemas/ColorPointDto"
					}
				},
				"required": [
					"blue",
					"green",
					"red"
				],
				"type": "object"
			},
			"DisplaySettingsDto": {
				"description": "DisplaySettingsDto schema",
				"properties": {
					"monitors": {
						"items": {
							"$ref": "#/components/schemas/MonitorDto"
						},
						"type": "array"
					}
				},
				"required": [
					"monitors"
				],
				"type": "object"
			},
			"DriveAllowChangesDto": {
				"description": "DriveAllowChangesDto schema",
				"properties": {
					"allowChanges": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"required": [
					"allowChanges"
				],
				"type": "object"
			},
			"DriveIssue": {
				"enum": [
					"no_filesystem",
					"unsupported_format",
					"duplicate_uuid",
					"needs_check"
				],
				"type": "string"
			},
			"DriveResponseDto": {
				"description": "DriveResponseDto schema",
				"properties": {
					"allowChanges": {
						"type": "boolean"
					},
					"deviceId": {
						"type": [
							"string",
							"null"
						]
					},
					"driveId": {
						"type": [
							"string",
							"null"
						]
					},
					"ejected": {
						"type": "boolean"
					},
					"fsType": {
						"type": "string"
					},
					"issue": {
						"$ref": "#/components/schemas/DriveIssue"
					},
					"label": {
						"type": "string"
					},
					"lastScannedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"lastSeenAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"model": {
						"type": "string"
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"mounted": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"readOnly": {
						"type": "boolean"
					},
					"sizeBytes": {
						"format": "int64",
						"type": "integer"
					},
					"uuid": {
						"type": [
							"string",
							"null"
						]
					},
					"vendor": {
						"type": "string"
					}
				},
				"required": [
					"allowChanges",
					"ejected",
					"fsType",
					"label",
					"model",
					"mounted",
					"name",
					"readOnly",
					"sizeBytes",
					"vendor"
				],
				"type": "object"
			},
			"EntryDto": {
				"properties": {
					"access": {
						"$ref": "#/components/schemas/AccessDto"
					},
					"checksum": {
						"type": [
							"string",
							"null"
						]
					},
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"extension": {
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"isDirectory": {
						"type": "boolean"
					},
					"isHidden": {
						"type": "boolean"
					},
					"mediaType": {
						"$ref": "#/components/schemas/MediaType"
					},
					"mimeType": {
						"type": [
							"string",
							"null"
						]
					},
					"modifiedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"owner": {
						"$ref": "#/components/schemas/UserResponseDto"
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					},
					"size": {
						"format": "int64",
						"type": "integer"
					},
					"sourceId": {
						"type": "string"
					},
					"trashedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"uploader": {
						"$ref": "#/components/schemas/UserResponseDto"
					}
				},
				"required": [
					"access",
					"checksum",
					"createdAt",
					"extension",
					"id",
					"isDirectory",
					"isHidden",
					"mediaType",
					"mimeType",
					"modifiedAt",
					"name",
					"parentId",
					"size",
					"sourceId",
					"trashedAt"
				],
				"type": "object"
			},
			"EntryIdsDto": {
				"description": "EntryIdsDto schema",
				"properties": {
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"ids"
				],
				"type": "object"
			},
			"EntryListResponseDto": {
				"description": "EntryListResponseDto schema",
				"properties": {
					"items": {
						"items": {
							"$ref": "#/components/schemas/EntryDto"
						},
						"type": "array"
					},
					"nextCursor": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"items",
					"nextCursor"
				],
				"type": "object"
			},
			"EntrySearchHitDto": {
				"properties": {
					"id": {
						"type": [
							"string",
							"null"
						]
					},
					"isDirectory": {
						"type": "boolean"
					},
					"location": {
						"type": "string"
					},
					"mediaType": {
						"$ref": "#/components/schemas/MediaType"
					},
					"mimeType": {
						"type": [
							"string",
							"null"
						]
					},
					"modifiedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"relativePath": {
						"type": [
							"string",
							"null"
						]
					},
					"size": {
						"format": "int64",
						"type": "integer"
					},
					"source": {
						"$ref": "#/components/schemas/EntrySourceType"
					}
				},
				"required": [
					"isDirectory",
					"location",
					"mediaType",
					"name",
					"size",
					"source"
				],
				"type": "object"
			},
			"EntrySearchResponseDto": {
				"description": "EntrySearchResponseDto schema",
				"properties": {
					"items": {
						"items": {
							"$ref": "#/components/schemas/EntrySearchHitDto"
						},
						"type": "array"
					},
					"nextPage": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"items"
				],
				"type": "object"
			},
			"EntrySort": {
				"enum": [
					"name",
					"size",
					"modifiedAt",
					"createdAt"
				],
				"type": "string"
			},
			"EntrySortBy": {
				"enum": [
					"relevance",
					"name",
					"modifiedAt",
					"createdAt",
					"size"
				],
				"type": "string"
			},
			"EntrySourceDto": {
				"description": "EntrySourceDto schema",
				"properties": {
					"capabilities": {
						"$ref": "#/components/schemas/CapabilitiesDto"
					},
					"id": {
						"type": "string"
					},
					"kind": {
						"$ref": "#/components/schemas/SourceType"
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"rootEntryId": {
						"type": "string"
					},
					"space": {
						"$ref": "#/components/schemas/SpaceDto"
					},
					"status": {
						"$ref": "#/components/schemas/EntrySourceStatus"
					}
				},
				"required": [
					"capabilities",
					"id",
					"kind",
					"mountId",
					"name",
					"rootEntryId",
					"status"
				],
				"type": "object"
			},
			"EntrySourceStatus": {
				"enum": [
					"online",
					"offline",
					"read_only"
				],
				"type": "string"
			},
			"EntrySourceType": {
				"enum": [
					"internal",
					"external"
				],
				"type": "string"
			},
			"ErrorItem": {
				"properties": {
					"more": {
						"additionalProperties": {
							"description": "Additional information about the error"
						},
						"description": "Additional information about the error",
						"type": [
							"object",
							"null"
						]
					},
					"name": {
						"description": "For example, name of the parameter that caused the error",
						"type": "string"
					},
					"reason": {
						"description": "Human readable error message",
						"type": "string"
					}
				},
				"required": [
					"name",
					"reason"
				],
				"type": "object"
			},
			"ExternalEntryDeleteDto": {
				"description": "ExternalEntryDeleteDto schema",
				"properties": {
					"path": {
						"type": "string"
					}
				},
				"required": [
					"path"
				],
				"type": "object"
			},
			"ExternalEntryDownloadDto": {
				"description": "ExternalEntryDownloadDto schema",
				"properties": {
					"paths": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"paths"
				],
				"type": "object"
			},
			"ExternalEntryDto": {
				"properties": {
					"isDirectory": {
						"type": "boolean"
					},
					"isHidden": {
						"type": "boolean"
					},
					"mimeType": {
						"type": [
							"string",
							"null"
						]
					},
					"modifiedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"relativePath": {
						"type": "string"
					},
					"size": {
						"format": "int64",
						"type": "integer"
					}
				},
				"required": [
					"isDirectory",
					"isHidden",
					"name",
					"relativePath",
					"size"
				],
				"type": "object"
			},
			"ExternalEntryFolderCreateDto": {
				"description": "ExternalEntryFolderCreateDto schema",
				"properties": {
					"name": {
						"type": "string"
					},
					"path": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"path"
				],
				"type": "object"
			},
			"ExternalEntryListResponseDto": {
				"description": "ExternalEntryListResponseDto schema",
				"properties": {
					"entries": {
						"items": {
							"$ref": "#/components/schemas/ExternalEntryDto"
						},
						"type": "array"
					},
					"mountId": {
						"type": "string"
					},
					"path": {
						"type": "string"
					}
				},
				"required": [
					"entries",
					"mountId",
					"path"
				],
				"type": "object"
			},
			"ExternalEntryMoveDto": {
				"description": "ExternalEntryMoveDto schema",
				"properties": {
					"destParentId": {
						"type": [
							"string",
							"null"
						]
					},
					"fromPath": {
						"type": "string"
					},
					"toPath": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"fromPath"
				],
				"type": "object"
			},
			"ExternalEntryRenameDto": {
				"description": "ExternalEntryRenameDto schema",
				"properties": {
					"newName": {
						"type": "string"
					},
					"path": {
						"type": "string"
					}
				},
				"required": [
					"newName",
					"path"
				],
				"type": "object"
			},
			"ExternalEntryUploadDto": {
				"description": "ExternalEntryUploadDto schema",
				"properties": {
					"file": {
						"format": "binary",
						"type": "string"
					}
				},
				"required": [
					"file"
				],
				"type": "object"
			},
			"FolderCreateDto": {
				"description": "FolderCreateDto schema",
				"properties": {
					"name": {
						"type": "string"
					}
				},
				"required": [
					"name"
				],
				"type": "object"
			},
			"HDRDiagnosticsDto": {
				"properties": {
					"displayPrimaries": {
						"$ref": "#/components/schemas/DisplayPrimariesDto"
					},
					"maxCll": {
						"type": [
							"integer",
							"null"
						]
					},
					"maxFall": {
						"type": [
							"integer",
							"null"
						]
					},
					"maxLuminance": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"minLuminance": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"whitePoint": {
						"$ref": "#/components/schemas/ColorPointDto"
					}
				},
				"type": "object"
			},
			"HTTPError": {
				"description": "HTTPError schema",
				"properties": {
					"detail": {
						"description": "Human readable error message",
						"type": "string"
					},
					"errors": {
						"items": {
							"$ref": "#/components/schemas/ErrorItem"
						},
						"type": "array"
					},
					"instance": {
						"type": "string"
					},
					"status": {
						"description": "HTTP status code",
						"example": 403,
						"type": "integer"
					},
					"title": {
						"description": "Short title of the error",
						"type": "string"
					},
					"type": {
						"description": "URL of the error type. Can be used to lookup the error in a documentation",
						"type": "string"
					}
				},
				"type": "object"
			},
			"InstallAppDto": {
				"description": "InstallAppDto schema",
				"properties": {
					"id": {
						"type": "string"
					}
				},
				"required": [
					"id"
				],
				"type": "object"
			},
			"InternalEntryCheckResponseDto": {
				"description": "InternalEntryCheckResponseDto schema",
				"properties": {
					"existingId": {
						"type": [
							"string",
							"null"
						]
					},
					"exists": {
						"type": "boolean"
					},
					"suggestedFilename": {
						"type": "string"
					}
				},
				"required": [
					"exists",
					"suggestedFilename"
				],
				"type": "object"
			},
			"InternalEntryDeleteDto": {
				"description": "InternalEntryDeleteDto schema",
				"properties": {
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"ids"
				],
				"type": "object"
			},
			"InternalEntryDownloadDto": {
				"description": "InternalEntryDownloadDto schema",
				"properties": {
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"ids"
				],
				"type": "object"
			},
			"InternalEntryDto": {
				"properties": {
					"checksum": {
						"type": [
							"string",
							"null"
						]
					},
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"extension": {
						"type": [
							"string",
							"null"
						]
					},
					"fileCreatedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"isDirectory": {
						"type": "boolean"
					},
					"mimeType": {
						"type": [
							"string",
							"null"
						]
					},
					"modifiedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"owner": {
						"$ref": "#/components/schemas/UserResponseDto"
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					},
					"sharedTo": {
						"items": {
							"$ref": "#/components/schemas/InternalEntryShareRecipientDto"
						},
						"type": "array"
					},
					"size": {
						"format": "int64",
						"type": "integer"
					},
					"trashedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					},
					"uploader": {
						"$ref": "#/components/schemas/UserResponseDto"
					}
				},
				"required": [
					"checksum",
					"createdAt",
					"extension",
					"fileCreatedAt",
					"id",
					"isDirectory",
					"mimeType",
					"modifiedAt",
					"name",
					"owner",
					"parentId",
					"sharedTo",
					"size",
					"trashedAt",
					"updatedAt",
					"uploader"
				],
				"type": "object"
			},
			"InternalEntryFolderCreateDto": {
				"description": "InternalEntryFolderCreateDto schema",
				"properties": {
					"name": {
						"type": "string"
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"name"
				],
				"type": "object"
			},
			"InternalEntryListResponseDto": {
				"description": "InternalEntryListResponseDto schema",
				"properties": {
					"count": {
						"type": "integer"
					},
					"items": {
						"items": {
							"$ref": "#/components/schemas/InternalEntryDto"
						},
						"type": "array"
					},
					"nextPage": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"count",
					"items",
					"nextPage"
				],
				"type": "object"
			},
			"InternalEntryMoveDto": {
				"description": "InternalEntryMoveDto schema",
				"properties": {
					"destMountId": {
						"type": [
							"string",
							"null"
						]
					},
					"destPath": {
						"type": [
							"string",
							"null"
						]
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"InternalEntryRenameDto": {
				"description": "InternalEntryRenameDto schema",
				"properties": {
					"name": {
						"type": "string"
					}
				},
				"required": [
					"name"
				],
				"type": "object"
			},
			"InternalEntryRestoreDto": {
				"description": "InternalEntryRestoreDto schema",
				"properties": {
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"ids"
				],
				"type": "object"
			},
			"InternalEntryShareRecipientDto": {
				"properties": {
					"permission": {
						"$ref": "#/components/schemas/ShareType"
					},
					"user": {
						"$ref": "#/components/schemas/UserResponseDto"
					}
				},
				"required": [
					"permission",
					"user"
				],
				"type": "object"
			},
			"InternalEntryTrashDto": {
				"description": "InternalEntryTrashDto schema",
				"properties": {
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"ids"
				],
				"type": "object"
			},
			"InternalEntryUploadDto": {
				"description": "InternalEntryUploadDto schema",
				"properties": {
					"file": {
						"format": "binary",
						"type": "string"
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					},
					"replaceExisting": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"required": [
					"file"
				],
				"type": "object"
			},
			"InternalEntryUploadResponseDto": {
				"description": "InternalEntryUploadResponseDto schema",
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"parentId": {
						"type": [
							"string",
							"null"
						]
					},
					"size": {
						"format": "int64",
						"type": "integer"
					}
				},
				"required": [
					"id",
					"name",
					"parentId",
					"size"
				],
				"type": "object"
			},
			"JobDto": {
				"description": "JobDto schema",
				"properties": {
					"doneEntries": {
						"type": "integer"
					},
					"failed": {
						"items": {
							"$ref": "#/components/schemas/JobFailureDto"
						},
						"type": "array"
					},
					"items": {
						"items": {
							"$ref": "#/components/schemas/EntryDto"
						},
						"type": "array"
					},
					"kind": {
						"$ref": "#/components/schemas/JobKind"
					},
					"status": {
						"$ref": "#/components/schemas/JobStatus"
					},
					"succeededIds": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"totalEntries": {
						"type": "integer"
					}
				},
				"required": [
					"doneEntries",
					"failed",
					"items",
					"kind",
					"status",
					"succeededIds",
					"totalEntries"
				],
				"type": "object"
			},
			"JobFailureDto": {
				"properties": {
					"code": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"code",
					"id"
				],
				"type": "object"
			},
			"JobKind": {
				"enum": [
					"trash",
					"restore",
					"delete",
					"clear_trash"
				],
				"type": "string"
			},
			"JobStatus": {
				"enum": [
					"done",
					"failed"
				],
				"type": "string"
			},
			"LinkFlowCreateDto": {
				"description": "LinkFlowCreateDto schema",
				"properties": {
					"label": {
						"description": "Name for the device being linked.",
						"maxLength": 64,
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"LinkFlowDto": {
				"description": "LinkFlowDto schema",
				"properties": {
					"flowId": {
						"description": "Identifies this linking attempt. Close it to withdraw the code.",
						"type": "string"
					},
					"label": {
						"description": "Name that will be recorded for the device.",
						"type": "string"
					},
					"openedAtMs": {
						"description": "When the flow was opened, in milliseconds since the epoch.",
						"format": "int64",
						"type": "integer"
					},
					"pairingUrl": {
						"description": "Pairing URL to render as a QR code. Valid only until the flow closes.",
						"type": "string"
					}
				},
				"required": [
					"flowId",
					"label",
					"openedAtMs",
					"pairingUrl"
				],
				"type": "object"
			},
			"LinkFlowStateDto": {
				"description": "LinkFlowStateDto schema",
				"properties": {
					"claimed": {
						"description": "Whether a device has claimed the code and is completing the handshake.",
						"type": "boolean"
					},
					"open": {
						"description": "Whether the flow is still open.",
						"type": "boolean"
					},
					"status": {
						"description": "open, completed, expired, cancelled, or unknown. Closed does not necessarily mean linking succeeded.",
						"type": "string"
					}
				},
				"required": [
					"claimed",
					"open"
				],
				"type": "object"
			},
			"LinkedDeviceDto": {
				"properties": {
					"connected": {
						"description": "Whether the device currently has a live tunnel to this server.",
						"type": "boolean"
					},
					"deviceName": {
						"description": "Name the device reports for itself, learned over the tunnel. Used when no label was given. Empty for devices paired before this was recorded.",
						"type": "string"
					},
					"label": {
						"description": "Human readable name given when the device was linked. Empty if the user typed none.",
						"type": "string"
					},
					"ownerId": {
						"description": "Id of the user who linked the device. Empty for bootstrap-paired devices.",
						"type": "string"
					},
					"pairedAtMs": {
						"description": "When the device completed pairing, in milliseconds since the epoch.",
						"format": "int64",
						"type": "integer"
					},
					"provenance": {
						"$ref": "#/components/schemas/LinkedDeviceProvenance"
					},
					"publicKey": {
						"description": "The device public key, base64 encoded. Identifies the device on the tunnel.",
						"type": "string"
					}
				},
				"required": [
					"connected",
					"deviceName",
					"label",
					"ownerId",
					"pairedAtMs",
					"provenance",
					"publicKey"
				],
				"type": "object"
			},
			"LinkedDeviceListDto": {
				"description": "LinkedDeviceListDto schema",
				"properties": {
					"available": {
						"description": "False when the gateway is unavailable, in which case the list is empty.",
						"type": "boolean"
					},
					"devices": {
						"items": {
							"$ref": "#/components/schemas/LinkedDeviceDto"
						},
						"type": "array"
					}
				},
				"required": [
					"available",
					"devices"
				],
				"type": "object"
			},
			"LinkedDeviceProvenance": {
				"enum": [
					"bootstrap",
					"link",
					"unknown"
				],
				"type": "string"
			},
			"LoginCredentialDto": {
				"description": "LoginCredentialDto schema",
				"properties": {
					"password": {
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"password",
					"username"
				],
				"type": "object"
			},
			"LoginResponseDto": {
				"description": "LoginResponseDto schema",
				"properties": {
					"accessToken": {
						"type": "string"
					},
					"isAdmin": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"shouldChangePassword": {
						"type": "boolean"
					},
					"userId": {
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"accessToken",
					"isAdmin",
					"name",
					"shouldChangePassword",
					"userId",
					"username"
				],
				"type": "object"
			},
			"LogoutResponseDto": {
				"description": "LogoutResponseDto schema",
				"properties": {
					"redirectUri": {
						"type": "string"
					},
					"successful": {
						"type": "boolean"
					}
				},
				"required": [
					"redirectUri",
					"successful"
				],
				"type": "object"
			},
			"ManifestSource": {
				"enum": [
					"fresh",
					"cache",
					"local",
					"disabled",
					"unavailable"
				],
				"type": "string"
			},
			"ManifestStatusResponseDto": {
				"properties": {
					"fetchedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"source": {
						"$ref": "#/components/schemas/ManifestSource"
					},
					"stale": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"type": "object"
			},
			"MediaDiagnosticsDto": {
				"properties": {
					"audio": {
						"$ref": "#/components/schemas/AudioDiagnosticsDto"
					},
					"network": {
						"$ref": "#/components/schemas/NetworkDiagnosticsDto"
					},
					"video": {
						"$ref": "#/components/schemas/VideoDiagnosticsDto"
					}
				},
				"type": "object"
			},
			"MediaPauseOnCallDto": {
				"description": "MediaPauseOnCallDto schema",
				"properties": {
					"enabled": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"required": [
					"enabled"
				],
				"type": "object"
			},
			"MediaResumeAfterCallDto": {
				"description": "MediaResumeAfterCallDto schema",
				"properties": {
					"maxSeconds": {
						"maximum": 86400,
						"minimum": 1,
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"maxSeconds"
				],
				"type": "object"
			},
			"MediaSubtitleDto": {
				"properties": {
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"language": {
						"type": "string"
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"language",
					"sourceType",
					"title"
				],
				"type": "object"
			},
			"MediaTrackSelectionDto": {
				"description": "MediaTrackSelectionDto schema",
				"properties": {
					"audioLanguage": {
						"type": [
							"string",
							"null"
						]
					},
					"audioTrack": {
						"type": [
							"integer",
							"null"
						]
					},
					"subtitleLanguage": {
						"type": [
							"string",
							"null"
						]
					},
					"subtitleTrack": {
						"type": [
							"integer",
							"null"
						]
					},
					"subtitles": {
						"items": {
							"$ref": "#/components/schemas/MediaSubtitleDto"
						},
						"type": "array"
					}
				},
				"required": [
					"audioLanguage",
					"audioTrack",
					"subtitleLanguage",
					"subtitleTrack",
					"subtitles"
				],
				"type": "object"
			},
			"MediaTrackSelectionSaveDto": {
				"description": "MediaTrackSelectionSaveDto schema",
				"properties": {
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"index": {
						"type": [
							"integer",
							"null"
						]
					},
					"language": {
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					}
				},
				"required": [
					"sourceType"
				],
				"type": "object"
			},
			"MediaType": {
				"enum": [
					"other",
					"image",
					"video",
					"audio",
					"document"
				],
				"type": "string"
			},
			"MediaWatchProgressDto": {
				"description": "MediaWatchProgressDto schema",
				"properties": {
					"progressSeconds": {
						"format": "double",
						"type": "number"
					}
				},
				"required": [
					"progressSeconds"
				],
				"type": "object"
			},
			"MediaWatchProgressSaveDto": {
				"description": "MediaWatchProgressSaveDto schema",
				"properties": {
					"durationSeconds": {
						"format": "double",
						"type": "number"
					},
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"progressSeconds": {
						"format": "double",
						"type": "number"
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					}
				},
				"required": [
					"durationSeconds",
					"progressSeconds",
					"sourceType"
				],
				"type": "object"
			},
			"MediaWatchProgressSourceDto": {
				"properties": {
					"entryId": {
						"type": [
							"string",
							"null"
						]
					},
					"mountId": {
						"type": [
							"string",
							"null"
						]
					},
					"path": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceType": {
						"$ref": "#/components/schemas/EntrySourceType"
					}
				},
				"required": [
					"sourceType"
				],
				"type": "object"
			},
			"MonitorDto": {
				"properties": {
					"active": {
						"type": "boolean"
					},
					"currentMode": {
						"$ref": "#/components/schemas/DisplayModeDto"
					},
					"id": {
						"type": "integer"
					},
					"name": {
						"type": "string"
					},
					"preferredMode": {
						"$ref": "#/components/schemas/DisplayModeDto"
					},
					"supportedModes": {
						"items": {
							"$ref": "#/components/schemas/DisplayModeDto"
						},
						"type": "array"
					}
				},
				"required": [
					"active",
					"currentMode",
					"id",
					"name",
					"supportedModes"
				],
				"type": "object"
			},
			"MonitorUpdateDto": {
				"description": "MonitorUpdateDto schema",
				"properties": {
					"active": {
						"type": "boolean"
					},
					"mode": {
						"$ref": "#/components/schemas/DisplayModeDto"
					}
				},
				"type": "object"
			},
			"MountHealthStatus": {
				"enum": [
					"healthy",
					"degraded",
					"unmounted",
					"unknown"
				],
				"type": "string"
			},
			"MountStatus": {
				"enum": [
					"mounted",
					"unmounted",
					"error"
				],
				"type": "string"
			},
			"MountType": {
				"enum": [
					"smb",
					"nfs",
					"usb"
				],
				"type": "string"
			},
			"NetworkDiagnosticsDto": {
				"properties": {
					"bytesRead": {
						"format": "int64",
						"type": "integer"
					},
					"speed": {
						"format": "int64",
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"bytesRead"
				],
				"type": "object"
			},
			"NetworkListDto": {
				"description": "NetworkListDto schema",
				"properties": {
					"networks": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"networks"
				],
				"type": "object"
			},
			"NetworkMountCreateDto": {
				"description": "NetworkMountCreateDto schema",
				"properties": {
					"mountOptions": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"password": {
						"type": [
							"string",
							"null"
						]
					},
					"scanIntervalMinutes": {
						"maximum": 1440,
						"minimum": 1,
						"type": [
							"integer",
							"null"
						]
					},
					"sourcePath": {
						"type": "string"
					},
					"type": {
						"$ref": "#/components/schemas/MountType"
					},
					"username": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"name",
					"sourcePath",
					"type"
				],
				"type": "object"
			},
			"NetworkMountResponseDto": {
				"description": "NetworkMountResponseDto schema",
				"properties": {
					"consecutiveMountFailures": {
						"type": "integer"
					},
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"deviceModel": {
						"type": [
							"string",
							"null"
						]
					},
					"hasPassword": {
						"type": "boolean"
					},
					"id": {
						"type": "string"
					},
					"lastMountCheckAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"lastScannedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"lastSeenAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"mountHealthStatus": {
						"$ref": "#/components/schemas/MountHealthStatus"
					},
					"mountOptions": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"ownerId": {
						"type": "string"
					},
					"scanIntervalMinutes": {
						"type": "integer"
					},
					"sourcePath": {
						"type": "string"
					},
					"status": {
						"$ref": "#/components/schemas/MountStatus"
					},
					"type": {
						"$ref": "#/components/schemas/MountType"
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					},
					"username": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"consecutiveMountFailures",
					"createdAt",
					"hasPassword",
					"id",
					"mountHealthStatus",
					"name",
					"ownerId",
					"scanIntervalMinutes",
					"sourcePath",
					"status",
					"type",
					"updatedAt"
				],
				"type": "object"
			},
			"NetworkMountUpdateDto": {
				"description": "NetworkMountUpdateDto schema",
				"properties": {
					"mountOptions": {
						"type": [
							"string",
							"null"
						]
					},
					"password": {
						"type": [
							"string",
							"null"
						]
					},
					"scanIntervalMinutes": {
						"maximum": 1440,
						"minimum": 1,
						"type": [
							"integer",
							"null"
						]
					},
					"sourcePath": {
						"type": [
							"string",
							"null"
						]
					},
					"username": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"OnboardingDeviceDto": {
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"name"
				],
				"type": "object"
			},
			"OnboardingDisconnectDto": {
				"description": "OnboardingDisconnectDto schema",
				"properties": {
					"deviceId": {
						"type": "string"
					}
				},
				"required": [
					"deviceId"
				],
				"type": "object"
			},
			"OnboardingHeartbeatDto": {
				"description": "OnboardingHeartbeatDto schema",
				"properties": {
					"deviceId": {
						"type": "string"
					},
					"deviceName": {
						"maxLength": 128,
						"type": "string"
					}
				},
				"required": [
					"deviceId",
					"deviceName"
				],
				"type": "object"
			},
			"OnboardingStateDto": {
				"description": "OnboardingStateDto schema",
				"properties": {
					"boxLabel": {
						"type": [
							"string",
							"null"
						]
					},
					"complete": {
						"type": "boolean"
					},
					"device": {
						"$ref": "#/components/schemas/OnboardingDeviceDto"
					},
					"pairingUrl": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"boxLabel",
					"complete",
					"device",
					"pairingUrl"
				],
				"type": "object"
			},
			"PendingUpdateResponseDto": {
				"properties": {
					"notes": {
						"description": "Release notes of the update being applied.",
						"type": [
							"string",
							"null"
						]
					},
					"phase": {
						"$ref": "#/components/schemas/UpdatePhase"
					},
					"progress": {
						"$ref": "#/components/schemas/ProgressResponseDto"
					},
					"startedAt": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"Permission": {
				"enum": [
					"all",
					"apiKey.create",
					"apiKey.read",
					"apiKey.update",
					"apiKey.delete",
					"auth.changePassword",
					"authDevice.delete",
					"session.create",
					"session.read",
					"session.update",
					"session.delete",
					"systemMetadata.read",
					"systemMetadata.update",
					"user.read",
					"user.update",
					"server.about",
					"linkedDevice.read",
					"linkedDevice.create",
					"linkedDevice.delete",
					"audio.read",
					"audio.manage",
					"app.read",
					"app.install",
					"internalEntry.read",
					"internalEntry.scan",
					"internalEntry.upload",
					"internalEntry.create",
					"internalEntry.update",
					"internalEntry.delete",
					"externalMount.read",
					"externalMount.create",
					"externalMount.update",
					"externalMount.delete",
					"externalEntry.read",
					"externalEntry.create",
					"externalEntry.update",
					"externalEntry.delete",
					"search.read",
					"file.read",
					"file.create",
					"file.update",
					"file.delete",
					"cast.read",
					"cast.control",
					"updates.read",
					"updates.apply",
					"updates.settings",
					"system.read",
					"system.power",
					"system.ssh",
					"adminUser.create",
					"adminUser.read",
					"adminUser.update",
					"adminUser.delete"
				],
				"type": "string"
			},
			"ProcessorDto": {
				"properties": {
					"model": {
						"description": "CPU model name; empty when the device does not report one.",
						"type": "string"
					},
					"threads": {
						"description": "Number of logical processors.",
						"type": "integer"
					}
				},
				"required": [
					"model",
					"threads"
				],
				"type": "object"
			},
			"ProgressResponseDto": {
				"properties": {
					"bytesDone": {
						"type": [
							"integer",
							"null"
						]
					},
					"bytesTotal": {
						"type": [
							"integer",
							"null"
						]
					},
					"completed": {
						"type": [
							"integer",
							"null"
						]
					},
					"component": {
						"type": [
							"string",
							"null"
						]
					},
					"componentName": {
						"type": [
							"string",
							"null"
						]
					},
					"step": {
						"$ref": "#/components/schemas/UpdateStep"
					},
					"total": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"type": "object"
			},
			"ProvisioningStatusDto": {
				"description": "ProvisioningStatusDto schema",
				"properties": {
					"bleActive": {
						"type": "boolean"
					},
					"bleConnectedDevices": {
						"type": "integer"
					},
					"isInitialized": {
						"type": "boolean"
					},
					"mdnsActive": {
						"type": "boolean"
					},
					"status": {
						"type": "string"
					}
				},
				"required": [
					"bleActive",
					"bleConnectedDevices",
					"isInitialized",
					"mdnsActive",
					"status"
				],
				"type": "object"
			},
			"RenameDto": {
				"description": "RenameDto schema",
				"properties": {
					"name": {
						"type": "string"
					}
				},
				"required": [
					"name"
				],
				"type": "object"
			},
			"RestoreDto": {
				"description": "RestoreDto schema",
				"properties": {
					"all": {
						"type": "boolean"
					},
					"ids": {
						"items": {
							"minLength": 1,
							"type": "string"
						},
						"type": "array"
					}
				},
				"type": "object"
			},
			"SSHAccessResponseDto": {
				"description": "SSHAccessResponseDto schema",
				"properties": {
					"addresses": {
						"description": "The device's LAN IPv4 addresses, for a connection line that works where .local names don't resolve.",
						"items": {
							"description": "The device's LAN IPv4 addresses, for a connection line that works where .local names don't resolve.",
							"type": "string"
						},
						"type": "array"
					},
					"enabled": {
						"description": "SSH is on: sshd was started when SSH was turned on, and starts at every boot.",
						"type": "boolean"
					},
					"hostKeys": {
						"description": "The device's host keys.",
						"items": {
							"$ref": "#/components/schemas/SSHHostKeyResponseDto"
						},
						"type": "array"
					},
					"keys": {
						"description": "The keys that sign in, in the order they were added.",
						"items": {
							"$ref": "#/components/schemas/SSHKeyResponseDto"
						},
						"type": "array"
					},
					"localHostname": {
						"description": "The name the device announces over mDNS, such as living-room.local; empty when it can't be read.",
						"type": "string"
					},
					"username": {
						"description": "The account every key signs in to.",
						"type": "string"
					}
				},
				"required": [
					"addresses",
					"enabled",
					"hostKeys",
					"keys",
					"localHostname",
					"username"
				],
				"type": "object"
			},
			"SSHAccessUpdateDto": {
				"description": "SSHAccessUpdateDto schema",
				"properties": {
					"enabled": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"required": [
					"enabled"
				],
				"type": "object"
			},
			"SSHHostKeyResponseDto": {
				"description": "The device's host keys.",
				"properties": {
					"fingerprint": {
						"description": "The key's SHA256 fingerprint, to check on the first connection.",
						"type": "string"
					},
					"type": {
						"description": "The key's algorithm, such as ssh-ed25519.",
						"type": "string"
					}
				},
				"required": [
					"fingerprint",
					"type"
				],
				"type": "object"
			},
			"SSHKeyAdderResponseDto": {
				"description": "Who added the key; absent for a key added on the device.",
				"properties": {
					"id": {
						"description": "The user's ID.",
						"type": "string"
					},
					"isAdmin": {
						"description": "False once the user lost admin rights or is in the trash.",
						"type": "boolean"
					},
					"name": {
						"description": "The user's name; null once the user is deleted for good.",
						"type": [
							"string",
							"null"
						]
					}
				},
				"required": [
					"id",
					"isAdmin",
					"name"
				],
				"type": "object"
			},
			"SSHKeyCreateDto": {
				"description": "SSHKeyCreateDto schema",
				"properties": {
					"name": {
						"description": "1 to 64 characters with no control characters.",
						"type": "string"
					},
					"publicKey": {
						"description": "One public key in authorized_keys format, without options, such as the contents of a .pub file.",
						"type": "string"
					}
				},
				"required": [
					"name",
					"publicKey"
				],
				"type": "object"
			},
			"SSHKeyResponseDto": {
				"description": "The keys that sign in, in the order they were added.",
				"properties": {
					"addedAt": {
						"description": "When the key was added; absent for a key added on the device.",
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"addedBy": {
						"$ref": "#/components/schemas/SSHKeyAdderResponseDto"
					},
					"fingerprint": {
						"description": "The key's SHA256 fingerprint.",
						"type": "string"
					},
					"name": {
						"description": "The name the key was added under.",
						"type": "string"
					},
					"type": {
						"description": "The key's algorithm, as OpenSSH names it, such as ssh-ed25519.",
						"type": "string"
					}
				},
				"required": [
					"fingerprint",
					"name",
					"type"
				],
				"type": "object"
			},
			"ServerAboutResponseDto": {
				"description": "ServerAboutResponseDto schema",
				"properties": {
					"build": {
						"type": [
							"string",
							"null"
						]
					},
					"buildUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"nodejs": {
						"type": [
							"string",
							"null"
						]
					},
					"repository": {
						"type": [
							"string",
							"null"
						]
					},
					"repositoryUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceCommit": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceRef": {
						"type": [
							"string",
							"null"
						]
					},
					"sourceUrl": {
						"type": [
							"string",
							"null"
						]
					},
					"version": {
						"type": "string"
					},
					"versionUrl": {
						"type": "string"
					}
				},
				"required": [
					"version",
					"versionUrl"
				],
				"type": "object"
			},
			"ServerConfigDto": {
				"description": "ServerConfigDto schema",
				"properties": {
					"isInitialized": {
						"type": "boolean"
					},
					"loginPageMessage": {
						"type": "string"
					},
					"userDeleteDelay": {
						"type": "integer"
					}
				},
				"required": [
					"isInitialized",
					"loginPageMessage",
					"userDeleteDelay"
				],
				"type": "object"
			},
			"ServerFeaturesDto": {
				"description": "ServerFeaturesDto schema",
				"properties": {
					"passwordLogin": {
						"type": "boolean"
					}
				},
				"required": [
					"passwordLogin"
				],
				"type": "object"
			},
			"ServerHostnameDto": {
				"description": "ServerHostnameDto schema",
				"properties": {
					"hostname": {
						"type": "string"
					}
				},
				"required": [
					"hostname"
				],
				"type": "object"
			},
			"ServerHostnameUpdateDto": {
				"description": "ServerHostnameUpdateDto schema",
				"properties": {
					"hostname": {
						"maxLength": 64,
						"type": "string"
					}
				},
				"required": [
					"hostname"
				],
				"type": "object"
			},
			"ServerLocaleDto": {
				"description": "ServerLocaleDto schema",
				"properties": {
					"language": {
						"type": "string"
					},
					"timezone": {
						"type": "string"
					}
				},
				"required": [
					"language",
					"timezone"
				],
				"type": "object"
			},
			"ServerLocaleUpdateDto": {
				"description": "ServerLocaleUpdateDto schema",
				"properties": {
					"language": {
						"type": [
							"string",
							"null"
						]
					},
					"timezone": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"ServerPingResponse": {
				"description": "ServerPingResponse schema",
				"properties": {
					"res": {
						"type": "string"
					}
				},
				"required": [
					"res"
				],
				"type": "object"
			},
			"ServerVersionResponseDto": {
				"description": "ServerVersionResponseDto schema",
				"properties": {
					"major": {
						"type": "integer"
					},
					"minor": {
						"type": "integer"
					},
					"patch": {
						"type": "integer"
					}
				},
				"required": [
					"major",
					"minor",
					"patch"
				],
				"type": "object"
			},
			"SessionCreateDto": {
				"description": "SessionCreateDto schema",
				"properties": {
					"deviceOS": {
						"type": [
							"string",
							"null"
						]
					},
					"deviceType": {
						"type": [
							"string",
							"null"
						]
					},
					"duration": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"type": "object"
			},
			"SessionCreateResponseDto": {
				"description": "SessionCreateResponseDto schema",
				"properties": {
					"appVersion": {
						"type": [
							"string",
							"null"
						]
					},
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"current": {
						"type": "boolean"
					},
					"deviceOS": {
						"type": "string"
					},
					"deviceType": {
						"type": "string"
					},
					"expiresAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"isPendingSyncReset": {
						"type": "boolean"
					},
					"token": {
						"type": "string"
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"appVersion",
					"createdAt",
					"current",
					"deviceOS",
					"deviceType",
					"id",
					"isPendingSyncReset",
					"token",
					"updatedAt"
				],
				"type": "object"
			},
			"SessionResponseDto": {
				"description": "SessionResponseDto schema",
				"properties": {
					"appVersion": {
						"type": [
							"string",
							"null"
						]
					},
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"current": {
						"type": "boolean"
					},
					"deviceOS": {
						"type": "string"
					},
					"deviceType": {
						"type": "string"
					},
					"expiresAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"isPendingSyncReset": {
						"type": "boolean"
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"appVersion",
					"createdAt",
					"current",
					"deviceOS",
					"deviceType",
					"id",
					"isPendingSyncReset",
					"updatedAt"
				],
				"type": "object"
			},
			"ShareBrowseResponseDto": {
				"description": "ShareBrowseResponseDto schema",
				"properties": {
					"children": {
						"items": {
							"$ref": "#/components/schemas/InternalEntryDto"
						},
						"type": "array"
					},
					"childrenCount": {
						"type": "integer"
					},
					"current": {
						"$ref": "#/components/schemas/InternalEntryDto"
					},
					"root": {
						"$ref": "#/components/schemas/InternalEntryDto"
					},
					"share": {
						"$ref": "#/components/schemas/ShareResponseDto"
					}
				},
				"required": [
					"children",
					"childrenCount",
					"current",
					"root",
					"share"
				],
				"type": "object"
			},
			"ShareCreateDto": {
				"description": "ShareCreateDto schema",
				"properties": {
					"entryId": {
						"type": "string"
					},
					"permission": {
						"$ref": "#/components/schemas/ShareType"
					},
					"userId": {
						"type": "string"
					}
				},
				"required": [
					"entryId",
					"permission",
					"userId"
				],
				"type": "object"
			},
			"ShareResponseDto": {
				"properties": {
					"entryId": {
						"type": "string"
					},
					"id": {
						"type": "string"
					},
					"permission": {
						"$ref": "#/components/schemas/ShareType"
					},
					"userId": {
						"type": "string"
					}
				},
				"required": [
					"entryId",
					"id",
					"permission",
					"userId"
				],
				"type": "object"
			},
			"ShareType": {
				"enum": [
					"viewer",
					"editor"
				],
				"type": "string"
			},
			"ShareUpdateDto": {
				"description": "ShareUpdateDto schema",
				"properties": {
					"permission": {
						"$ref": "#/components/schemas/ShareType"
					},
					"shareId": {
						"type": "string"
					}
				},
				"required": [
					"permission",
					"shareId"
				],
				"type": "object"
			},
			"SharedWithMeEntryDto": {
				"description": "SharedWithMeEntryDto schema",
				"properties": {
					"node": {
						"$ref": "#/components/schemas/InternalEntryDto"
					},
					"share": {
						"$ref": "#/components/schemas/ShareResponseDto"
					}
				},
				"required": [
					"node",
					"share"
				],
				"type": "object"
			},
			"SignUpDto": {
				"description": "SignUpDto schema",
				"properties": {
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"password": {
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"password",
					"username"
				],
				"type": "object"
			},
			"SortOrder": {
				"enum": [
					"asc",
					"desc"
				],
				"type": "string"
			},
			"SourceType": {
				"enum": [
					"local",
					"remote",
					"network"
				],
				"type": "string"
			},
			"SpaceDto": {
				"properties": {
					"freeBytes": {
						"format": "int64",
						"type": "integer"
					},
					"totalBytes": {
						"format": "int64",
						"type": "integer"
					}
				},
				"required": [
					"freeBytes",
					"totalBytes"
				],
				"type": "object"
			},
			"SystemInfoDto": {
				"description": "SystemInfoDto schema",
				"properties": {
					"bootId": {
						"description": "The kernel boot id, the same value as bootId in the update state. It changes on every restart, not on an agent restart. Empty when the device does not report one.",
						"type": "string"
					},
					"graphics": {
						"description": "Graphics adapters, one name per GPU.",
						"items": {
							"description": "Graphics adapters, one name per GPU.",
							"type": "string"
						},
						"type": "array"
					},
					"hostname": {
						"description": "The device name.",
						"type": "string"
					},
					"memoryBytes": {
						"description": "Total usable memory in bytes.",
						"type": "integer"
					},
					"processor": {
						"$ref": "#/components/schemas/ProcessorDto"
					},
					"storageBytes": {
						"description": "Capacity of the data volume in bytes.",
						"type": "integer"
					},
					"version": {
						"description": "The installed update bundle version; empty before the first bundle is recorded, and dev on a development host that has none.",
						"type": "string"
					}
				},
				"required": [
					"bootId",
					"graphics",
					"hostname",
					"memoryBytes",
					"processor",
					"storageBytes",
					"version"
				],
				"type": "object"
			},
			"SystemVersionResponseDto": {
				"description": "SystemVersionResponseDto schema",
				"properties": {
					"version": {
						"description": "Version of the installed update bundle, the one version shown to users; empty before the first bundle is recorded or when the system agent cannot be reached, and dev on a development host that has none.",
						"type": "string"
					}
				},
				"required": [
					"version"
				],
				"type": "object"
			},
			"TunnelIdentityDto": {
				"description": "TunnelIdentityDto schema",
				"properties": {
					"publicKey": {
						"description": "The public gateway identity. Does not authorize access.",
						"type": "string"
					}
				},
				"required": [
					"publicKey"
				],
				"type": "object"
			},
			"UpdatePhase": {
				"enum": [
					"applying",
					"committing",
					"awaiting-reboot",
					"failed"
				],
				"type": "string"
			},
			"UpdateResult": {
				"enum": [
					"applied",
					"staged-awaiting-reboot",
					"rolled-back",
					"rollback-failed-needs-attention",
					"failed"
				],
				"type": "string"
			},
			"UpdateSettingsDto": {
				"properties": {
					"autoUpdate": {
						"type": "boolean"
					},
					"channel": {
						"description": "alpha, nightly, or a development channel such as dev-\u003cbranch\u003e.",
						"type": "string"
					},
					"inactiveHours": {
						"type": [
							"string",
							"null"
						]
					},
					"manifestUrl": {
						"type": "string"
					},
					"pollIntervalSeconds": {
						"minimum": 0,
						"type": "integer"
					}
				},
				"required": [
					"autoUpdate",
					"channel",
					"manifestUrl",
					"pollIntervalSeconds"
				],
				"type": "object"
			},
			"UpdateStateResponseDto": {
				"description": "UpdateStateResponseDto schema",
				"properties": {
					"applied": {
						"$ref": "#/components/schemas/AppliedUpdateResponseDto"
					},
					"available": {
						"$ref": "#/components/schemas/AvailableUpdateResponseDto"
					},
					"bootId": {
						"description": "The kernel boot id; changes on every reboot, not on an agent restart.",
						"type": [
							"string",
							"null"
						]
					},
					"check": {
						"$ref": "#/components/schemas/CheckStatusResponseDto"
					},
					"lastApply": {
						"$ref": "#/components/schemas/ApplyOutcomeResponseDto"
					},
					"manifest": {
						"$ref": "#/components/schemas/ManifestStatusResponseDto"
					},
					"pending": {
						"$ref": "#/components/schemas/PendingUpdateResponseDto"
					},
					"restarting": {
						"description": "An accepted restart is finishing the update that pending reports as awaiting-reboot or failed. Cleared when the restart cannot be scheduled or the device is still up a minute later.",
						"type": [
							"boolean",
							"null"
						]
					},
					"revision": {
						"description": "Grows with every state change, across agent restarts. Keep the state with the highest revision, accepting an equal one.",
						"format": "int64",
						"type": [
							"integer",
							"null"
						]
					},
					"settings": {
						"$ref": "#/components/schemas/UpdateSettingsDto"
					}
				},
				"type": "object"
			},
			"UpdateStep": {
				"enum": [
					"downloading",
					"installing",
					"staging",
					"refreshing"
				],
				"type": "string"
			},
			"UploadDto": {
				"description": "UploadDto schema",
				"properties": {
					"file": {
						"format": "binary",
						"type": "string"
					}
				},
				"required": [
					"file"
				],
				"type": "object"
			},
			"UploadResponseDto": {
				"description": "UploadResponseDto schema",
				"properties": {
					"items": {
						"items": {
							"$ref": "#/components/schemas/EntryDto"
						},
						"type": "array"
					}
				},
				"required": [
					"items"
				],
				"type": "object"
			},
			"UserAdminCreateDto": {
				"description": "UserAdminCreateDto schema",
				"properties": {
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"isAdmin": {
						"type": [
							"boolean",
							"null"
						]
					},
					"name": {
						"type": "string"
					},
					"password": {
						"minLength": 8,
						"type": "string"
					},
					"shouldChangePassword": {
						"type": [
							"boolean",
							"null"
						]
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"password",
					"username"
				],
				"type": "object"
			},
			"UserAdminDeleteDto": {
				"description": "UserAdminDeleteDto schema",
				"properties": {
					"force": {
						"type": "boolean"
					}
				},
				"type": "object"
			},
			"UserAdminResponseDto": {
				"description": "UserAdminResponseDto schema",
				"properties": {
					"createdAt": {
						"format": "date-time",
						"type": "string"
					},
					"deletedAt": {
						"format": "date-time",
						"type": [
							"string",
							"null"
						]
					},
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"isAdmin": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"shouldChangePassword": {
						"type": "boolean"
					},
					"status": {
						"$ref": "#/components/schemas/UserStatus"
					},
					"updatedAt": {
						"format": "date-time",
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"createdAt",
					"deletedAt",
					"email",
					"id",
					"isAdmin",
					"name",
					"shouldChangePassword",
					"status",
					"updatedAt",
					"username"
				],
				"type": "object"
			},
			"UserAdminUpdateDto": {
				"description": "UserAdminUpdateDto schema",
				"properties": {
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"isAdmin": {
						"type": [
							"boolean",
							"null"
						]
					},
					"name": {
						"type": [
							"string",
							"null"
						]
					},
					"password": {
						"minLength": 8,
						"type": [
							"string",
							"null"
						]
					},
					"shouldChangePassword": {
						"type": [
							"boolean",
							"null"
						]
					}
				},
				"type": "object"
			},
			"UserMediaConfigDto": {
				"description": "UserMediaConfigDto schema",
				"properties": {
					"pauseOnCall": {
						"type": "boolean"
					},
					"resumeAfterCallMaxSeconds": {
						"type": [
							"integer",
							"null"
						]
					}
				},
				"required": [
					"pauseOnCall",
					"resumeAfterCallMaxSeconds"
				],
				"type": "object"
			},
			"UserResponseDto": {
				"properties": {
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"email",
					"id",
					"name",
					"username"
				],
				"type": "object"
			},
			"UserStatus": {
				"enum": [
					"active",
					"removing",
					"deleted"
				],
				"type": "string"
			},
			"UserUpdateMeDto": {
				"description": "UserUpdateMeDto schema",
				"properties": {
					"email": {
						"type": [
							"string",
							"null"
						]
					},
					"name": {
						"type": [
							"string",
							"null"
						]
					}
				},
				"type": "object"
			},
			"VideoDiagnosticsDto": {
				"properties": {
					"bitRate": {
						"format": "int64",
						"type": [
							"integer",
							"null"
						]
					},
					"codec": {
						"type": [
							"string",
							"null"
						]
					},
					"colorPrimaries": {
						"type": [
							"string",
							"null"
						]
					},
					"colorRange": {
						"type": [
							"string",
							"null"
						]
					},
					"colorSpace": {
						"type": [
							"string",
							"null"
						]
					},
					"colorTransfer": {
						"type": [
							"string",
							"null"
						]
					},
					"frameRate": {
						"format": "double",
						"type": [
							"number",
							"null"
						]
					},
					"framesDropped": {
						"format": "int64",
						"type": "integer"
					},
					"framesPlayed": {
						"format": "int64",
						"type": "integer"
					},
					"hardwareDecoded": {
						"type": "boolean"
					},
					"hdr": {
						"$ref": "#/components/schemas/HDRDiagnosticsDto"
					},
					"height": {
						"type": "integer"
					},
					"pixelFormat": {
						"type": [
							"string",
							"null"
						]
					},
					"width": {
						"type": "integer"
					}
				},
				"required": [
					"framesDropped",
					"framesPlayed",
					"hardwareDecoded",
					"height",
					"width"
				],
				"type": "object"
			},
			"uint8": {
				"description": "uint8 schema",
				"maximum": 255,
				"minimum": 0,
				"type": "integer"
			},
			"unknown-interface": {
				"description": "unknown-interface schema"
			}
		},
		"securitySchemes": {
			"api_key": {
				"in": "header",
				"name": "x-api-key",
				"type": "apiKey"
			},
			"bearer": {
				"bearerFormat": "JWT",
				"scheme": "bearer",
				"type": "http"
			},
			"cookie": {
				"in": "cookie",
				"name": "app_access_token",
				"type": "apiKey"
			}
		}
	},
	"info": {
		"description": "\nThis is the autogenerated OpenAPI documentation for your [Fuego](https://github.com/go-fuego/fuego) API.\n\nBelow is a Fuego Cheatsheet to help you get started. Don't hesitate to check the [Fuego documentation](https://go-fuego.dev) for more details.\n\nHappy coding! 🔥\n\n## Usage\n\n### Route registration\n\n```go\nfunc main() {\n\t// Create a new server\n\ts := fuego.NewServer()\n\n\t// Register some routes\n\tfuego.Post(s, \"/hello\", myController)\n\tfuego.Get(s, \"/myPath\", otherController)\n\tfuego.Put(s, \"/hello\", thirdController)\n\n\tadminRoutes := fuego.Group(s, \"/admin\")\n\tfuego.Use(adminRoutes, myMiddleware) // This middleware (for authentication, etc...) will be available for routes starting by /admin/*, \n\tfuego.Get(adminRoutes, \"/hello\", groupController) // This route will be available at /admin/hello\n\n\t// Start the server\n\ts.Start()\n}\n```\n\n### Basic controller\n\n```go\ntype MyBody struct {\n\tName string `json:\"name\" validate:\"required,max=30\"`\n}\n\ntype MyResponse struct {\n\tAnswer string `json:\"answer\"`\n}\n\nfunc hello(ctx fuego.ContextWithBody[MyBody]) (*MyResponse, error) {\n\tbody, err := ctx.Body()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn \u0026MyResponse{Answer: \"Hello \" + body.Name}, nil\n}\n```\n\n### Add openAPI information to the route\n\n```go\nimport (\n\t\"github.com/go-fuego/fuego\"\n\t\"github.com/go-fuego/fuego/option\"\n\t\"github.com/go-fuego/fuego/param\"\n)\n\nfunc main() {\n\ts := fuego.NewServer()\n\n\t// Custom OpenAPI options\n\tfuego.Post(s, \"/\", myController\n\t\toption.Description(\"This route does something...\"),\n\t\toption.Summary(\"This is my summary\"),\n\t\toption.Tags(\"MyTag\"), // A tag is set by default according to the return type (can be deactivated)\n\t\toption.Deprecated(), // Marks the route as deprecated in the OpenAPI spec\n\n\t\toption.Query(\"name\", \"Declares a query parameter with default value\", param.Default(\"Carmack\")),\n\t\toption.Header(\"Authorization\", \"Bearer token\", param.Required()),\n\t\toptionPagination,\n\t\toptionCustomBehavior,\n\t)\n\n\ts.Run()\n}\n\nvar optionPagination = option.Group(\n\toption.QueryInt(\"page\", \"Page number\", param.Default(1), param.Example(\"1st page\", 1), param.Example(\"42nd page\", 42)),\n\toption.QueryInt(\"perPage\", \"Number of items per page\"),\n)\n\nvar optionCustomBehavior = func(r *fuego.BaseRoute) {\n\tr.XXX = \"YYY\"\n}\n```\n\nThen, in the controller\n\n```go\ntype MyResponse struct {\n\tAnswer string `json:\"answer\"`\n}\n\nfunc getAllPets(ctx fuego.ContextNoBody) (*MyResponse, error) {\n\tname := ctx.QueryParam(\"name\")\n\tperPage, _ := ctx.QueryParamIntErr(\"per_page\")\n\n\treturn \u0026MyResponse{Answer: \"Hello \" + name}, nil\n}\n```\n",
		"title": "FHS Server",
		"version": "0.1.0"
	},
	"openapi": "3.1.0",
	"paths": {
		"/api/admin/users": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "searchUsersAdmin",
				"parameters": [
					{
						"description": "Include soft-deleted users",
						"in": "query",
						"name": "withDeleted",
						"schema": {
							"type": "boolean"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/UserAdminResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "searchUsersAdmin",
				"tags": [
					"users/admin"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createUserAdmin",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserAdminCreateDto"
							}
						}
					},
					"description": "Request body for dto.UserAdminCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createUserAdmin",
				"tags": [
					"users/admin"
				]
			}
		},
		"/api/admin/users/{id}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteUserAdmin",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserAdminDeleteDto"
							}
						}
					},
					"description": "Request body for dto.UserAdminDeleteDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteUserAdmin",
				"tags": [
					"users/admin"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getUserAdmin",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getUserAdmin",
				"tags": [
					"users/admin"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateUserAdmin",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserAdminUpdateDto"
							}
						}
					},
					"description": "Request body for dto.UserAdminUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateUserAdmin",
				"tags": [
					"users/admin"
				]
			}
		},
		"/api/admin/users/{id}/restore": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserAdminController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "restoreUserAdmin",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "restoreUserAdmin",
				"tags": [
					"users/admin"
				]
			}
		},
		"/api/api-keys": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getApiKeys",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/APIKeyResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getApiKeys",
				"tags": [
					"api-keys"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createApiKey",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/APIKeyCreateDto"
							}
						}
					},
					"description": "Request body for dto.APIKeyCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/APIKeyCreateResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createApiKey",
				"tags": [
					"api-keys"
				]
			}
		},
		"/api/api-keys/me": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getMyApiKey",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/APIKeyResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getMyApiKey",
				"tags": [
					"api-keys"
				]
			}
		},
		"/api/api-keys/{id}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteApiKey",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteApiKey",
				"tags": [
					"api-keys"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getApiKey",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/APIKeyResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getApiKey",
				"tags": [
					"api-keys"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ApiKeyController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateApiKey",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/APIKeyUpdateDto"
							}
						}
					},
					"description": "Request body for dto.APIKeyUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/APIKeyResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateApiKey",
				"tags": [
					"api-keys"
				]
			}
		},
		"/api/apps": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "listApps",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/AppResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "listApps",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/install": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "installApp",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InstallAppDto"
							}
						}
					},
					"description": "Request body for dto.InstallAppDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppInstallResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "installation already in progress"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "installApp",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/refresh": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "refreshAppStore",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "refreshAppStore",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/status": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getAppStatuses",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/AppStatusDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getAppStatuses",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/{id}": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getApp",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getApp",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/{id}/start": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "startApp",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "app is not installed"
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "installation or start already in progress"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "startApp",
				"tags": [
					"apps"
				]
			}
		},
		"/api/apps/{id}/test": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AppController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "testApp",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppTestResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "testApp",
				"tags": [
					"apps"
				]
			}
		},
		"/api/audio/balance": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRuns from -100 (left) to 100 (right) and lowers one side of a 2-channel output while the louder side stays at the volume.",
				"operationId": "setAudioBalance",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioBalanceRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioBalanceRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_INVALID: the output does not have 2 channels. A body that fails validation is also a 400, without a code."
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_NOT_FOUND: no output is connected."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setAudioBalance",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/formats": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nauto passes through every format the receiver advertises, pcm decodes everything on the device, and custom passes through only the given codecs.",
				"operationId": "setAudioFormats",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioFormatsRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioFormatsRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_INVALID: the mode is unknown, custom has no known codec, or the mode is not pcm while mono is on. A body that fails validation is also a 400, without a code."
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_NOT_FOUND: no output is connected."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setAudioFormats",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/layout": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nSwitches the default output's sound card to one of the layouts the status lists. This rebuilds the card's outputs, so the output's name can change.",
				"operationId": "setAudioLayout",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioLayoutRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioLayoutRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_INVALID: the output has no layouts, or the layout is for another connector, has nothing plugged in, or is not stereo while mono is on. A body that fails validation is also a 400, without a code."
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_NOT_FOUND: no output is connected, or it has no such layout."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setAudioLayout",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/mono": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nMixes both channels into both speakers on every output.",
				"operationId": "setAudioMono",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioMonoRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioMonoRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setAudioMono",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/output": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nSwitches to the connector if one is given and makes the output the default. Each connector keeps its own volume.",
				"operationId": "selectAudioOutput",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioOutputRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioOutputRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_INVALID: nothing is plugged into the connector. A body that fails validation is also a 400, without a code."
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_NOT_FOUND: no such output or connector."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "selectAudioOutput",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/status": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nThe whole audio state in one document.",
				"operationId": "getAudioStatus",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AudioStatusResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getAudioStatus",
				"tags": [
					"audio"
				]
			}
		},
		"/api/audio/volume": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AudioController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nScales every channel together, keeping the balance, and unmutes the output.",
				"operationId": "setAudioVolume",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AudioVolumeRequestDto"
							}
						}
					},
					"description": "Request body for dto.AudioVolumeRequestDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_NOT_FOUND: no output is connected."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "AUDIO_UNAVAILABLE: PipeWire is not reachable on this host."
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setAudioVolume",
				"tags": [
					"audio"
				]
			}
		},
		"/api/auth/admin-sign-up": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AuthController).RegisterRoutes.func2`\n\n---\n\n",
				"operationId": "signUpAdmin",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SignUpDto"
							}
						}
					},
					"description": "Request body for dto.SignUpDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "signUpAdmin",
				"tags": [
					"authentication"
				]
			}
		},
		"/api/auth/change-password": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AuthController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "changePassword",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ChangePasswordDto"
							}
						}
					},
					"description": "Request body for dto.ChangePasswordDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "changePassword",
				"tags": [
					"authentication"
				]
			}
		},
		"/api/auth/login": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AuthController).RegisterRoutes.func1`\n\n---\n\n",
				"operationId": "login",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/LoginCredentialDto"
							}
						}
					},
					"description": "Request body for dto.LoginCredentialDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LoginResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "login",
				"tags": [
					"authentication"
				]
			}
		},
		"/api/auth/logout": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AuthController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "logout",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LogoutResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "logout",
				"tags": [
					"authentication"
				]
			}
		},
		"/api/auth/validateToken": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*AuthController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "validateAccessToken",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AuthStatusResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "validateAccessToken",
				"tags": [
					"authentication"
				]
			}
		},
		"/api/cast/session": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "stopCast",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "stopCast",
				"tags": [
					"cast"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getCastSession",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getCastSession",
				"tags": [
					"cast"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "startCast",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastStartDto"
							}
						}
					},
					"description": "Request body for dto.CastStartDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "startCast",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/audio": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func11`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getCastAudioTracks",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastTracksDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getCastAudioTracks",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/audio/select": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func12`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "selectCastAudioTrack",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastTrackSelectDto"
							}
						}
					},
					"description": "Request body for dto.CastTrackSelectDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastTracksDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "selectCastAudioTrack",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/pause": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "pauseCast",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "pauseCast",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/resume": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "resumeCast",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "resumeCast",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/seek": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "seekCast",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastSeekDto"
							}
						}
					},
					"description": "Request body for dto.CastSeekDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "seekCast",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/subtitles": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getCastSubtitles",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastTracksDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getCastSubtitles",
				"tags": [
					"cast"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func8`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "addCastSubtitle",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastSubtitleAddDto"
							}
						}
					},
					"description": "Request body for dto.CastSubtitleAddDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastTracksDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "addCastSubtitle",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/subtitles/scale": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func10`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "setCastSubtitleScale",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastSubtitleScaleDto"
							}
						}
					},
					"description": "Request body for dto.CastSubtitleScaleDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastSessionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setCastSubtitleScale",
				"tags": [
					"cast"
				]
			}
		},
		"/api/cast/session/subtitles/select": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*CastController).RegisterRoutes.func9`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "selectCastSubtitle",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CastTrackSelectDto"
							}
						}
					},
					"description": "Request body for dto.CastTrackSelectDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CastTracksDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "selectCastSubtitle",
				"tags": [
					"cast"
				]
			}
		},
		"/api/external/drives": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAny user. Every drive plugged into the box, usable or not, from the system agent's latest report, with its stored details when it has a row. A drive that's never stored has no mountId.",
				"operationId": "getExternalDrives",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/DriveResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getExternalDrives",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/drives/{id}": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAny user. One stored drive by its mountId, also while it's unplugged.",
				"operationId": "getExternalDrive",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DriveResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getExternalDrive",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/drives/{id}/allow-changes": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAdmin only. Asks the agent to remount the drive before answering, but readOnly in the answer is still the last storage.state's; on_drive_updated reports the new mount.",
				"operationId": "setExternalDriveAllowChanges",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DriveAllowChangesDto"
							}
						}
					},
					"description": "Request body for dto.DriveAllowChangesDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DriveResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setExternalDriveAllowChanges",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/drives/{id}/clear-needs-check": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAdmin only. For a plugged-in drive whose driveIssue is needs_check: clears the NTFS dirty flag on the box with ntfsfix, which doesn't check the files the way Windows does, then applies Allow changes. The drive is unmounted while it runs. A 409 with the in_use code names what's using it; on_drive_updated reports the cleared issue.",
				"operationId": "clearExternalDriveNeedsCheck",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "clearExternalDriveNeedsCheck",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/drives/{id}/eject": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAny user. Remove safely: unmounts every partition of the drive and holds it until it's unplugged. A 409 with the in_use code names what's using it.",
				"operationId": "ejectExternalDrive",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "ejectExternalDrive",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/drives/{id}/scan": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalDriveController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAny user. Scans the drive now; refused while it isn't plugged in.",
				"operationId": "scanExternalDrive",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "scanExternalDrive",
				"tags": [
					"external/drives"
				]
			}
		},
		"/api/external/mounts": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getExternalMounts",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/NetworkMountResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getExternalMounts",
				"tags": [
					"external/mounts"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createExternalMount",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/NetworkMountCreateDto"
							}
						}
					},
					"description": "Request body for dto.NetworkMountCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkMountResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createExternalMount",
				"tags": [
					"external/mounts"
				]
			}
		},
		"/api/external/mounts/{id}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteExternalMount",
				"tags": [
					"external/mounts"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkMountResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getExternalMount",
				"tags": [
					"external/mounts"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/NetworkMountUpdateDto"
							}
						}
					},
					"description": "Request body for dto.NetworkMountUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkMountResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateExternalMount",
				"tags": [
					"external/mounts"
				]
			}
		},
		"/api/external/mounts/{id}/browse": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "browseExternalEntries",
				"parameters": [
					{
						"description": "Directory path within the mount",
						"in": "query",
						"name": "path",
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalEntryListResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "browseExternalEntries",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/delete": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func8`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteExternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryDeleteDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryDeleteDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteExternalEntry",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/download": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "downloadExternalEntry",
				"parameters": [
					{
						"description": "File or folder path within the mount",
						"in": "query",
						"name": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "downloadExternalEntry",
				"tags": [
					"external/entries"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "downloadExternalEntries",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryDownloadDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryDownloadDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "downloadExternalEntries",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/folder": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createExternalFolder",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryFolderCreateDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryFolderCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createExternalFolder",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/mount": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "mountExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkMountResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "mountExternalMount",
				"tags": [
					"external/mounts"
				]
			}
		},
		"/api/external/mounts/{id}/move": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "moveExternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryMoveDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryMoveDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "moveExternalEntry",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/rename": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "renameExternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryRenameDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryRenameDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "renameExternalEntry",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/external/mounts/{id}/scan": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func8`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "scanExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "scanExternalMount",
				"tags": [
					"external/mounts"
				]
			}
		},
		"/api/external/mounts/{id}/unmount": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalMountController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "unmountExternalMount",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkMountResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "unmountExternalMount",
				"tags": [
					"external/mounts"
				]
			}
		},
		"/api/external/mounts/{id}/upload": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ExternalEntryController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "uploadExternalEntry",
				"parameters": [
					{
						"description": "Destination directory within the mount",
						"in": "query",
						"name": "path",
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"multipart/form-data": {
							"schema": {
								"$ref": "#/components/schemas/ExternalEntryUploadDto"
							}
						}
					},
					"description": "Request body for dto.ExternalEntryUploadDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "uploadExternalEntry",
				"tags": [
					"external/entries"
				]
			}
		},
		"/api/files": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesBulkController).RegisterRoutes.func1.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nDeletes entries for good, as one job, at most 1000 in a request, from any mix of sources. Each entry that can't be deleted is in the job's failed list with its code; items is always empty.",
				"operationId": "deleteEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/EntryIdsDto"
							}
						}
					},
					"description": "Request body for dto.EntryIdsDto",
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/JobDto"
								}
							}
						},
						"description": "Accepted"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "Another change to the same My Files ran over 5 seconds, with code in_use"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteEntries",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/download": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "downloadEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/EntryIdsDto"
							}
						}
					},
					"description": "Request body for dto.EntryIdsDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "downloadEntries",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/restore": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesBulkController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRestores entries from the trash, as one job: the ids sent, at most 1000, or all. An entry whose folder is still in the trash comes back at the top of My Files, under a name that's free there.",
				"operationId": "restoreEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RestoreDto"
							}
						}
					},
					"description": "Request body for dto.RestoreDto",
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/JobDto"
								}
							}
						},
						"description": "Accepted"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "Another change to the same My Files ran over 5 seconds, with code in_use"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "restoreEntries",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/sources": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getEntrySources",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/EntrySourceDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getEntrySources",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/trash": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesBulkController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nThe caller's trash, newest first.",
				"operationId": "listEntryTrash",
				"parameters": [
					{
						"description": "nextCursor from the previous page",
						"in": "query",
						"name": "cursor",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Items per page, at most 1000",
						"in": "query",
						"name": "limit",
						"schema": {
							"default": 100,
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/EntryListResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "listEntryTrash",
				"tags": [
					"files"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesBulkController).RegisterRoutes.func1.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nMoves My Files entries to the trash, as one job, at most 1000 in a request. An entry on a drive or network folder fails with code not_supported: delete it instead.",
				"operationId": "trashEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/EntryIdsDto"
							}
						}
					},
					"description": "Request body for dto.EntryIdsDto",
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/JobDto"
								}
							}
						},
						"description": "Accepted"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "Another change to the same My Files ran over 5 seconds, with code in_use"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "trashEntries",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/trash/clear": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesBulkController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nDeletes everything in the caller's trash for good, as one job. A file being downloaded or played stays, in failed with code in_use. items is always empty.",
				"operationId": "clearEntryTrash",
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/JobDto"
								}
							}
						},
						"description": "Accepted"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "Another change to the same My Files ran over 5 seconds, with code in_use"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "clearEntryTrash",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{id}": {
			"patch": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesEditController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRenames an entry, keeping its ID. On a drive or network folder, everything below a renamed folder keeps its ID too. A source's top folder is a 422 with code not_supported, and a name already taken is a 409 with code conflict.",
				"operationId": "renameEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RenameDto"
							}
						}
					},
					"description": "Request body for dto.RenameDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/EntryDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The caller may only view the entry, an editor may not rename the shared folder itself, or the source doesn't let the server write there, with code forbidden"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "No entry with this ID that the caller can see, with code not_found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The name is taken, with code conflict, the source can only be read, with code read_only, or the entry is busy, with code in_use"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The entry is a source's top folder, with code not_supported"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The source can't be reached, with code source_offline"
					},
					"507": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The drive or network folder is full, with code no_space"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "renameEntry",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{id}/breadcrumbs": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getEntryBreadcrumbs",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/BreadcrumbDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "No entry with this ID that the caller can see, with code not_found"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getEntryBreadcrumbs",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{id}/children": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "listEntryChildren",
				"parameters": [
					{
						"description": "nextCursor from the previous page, with the same sort and order",
						"in": "query",
						"name": "cursor",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Items per page, at most 1000",
						"in": "query",
						"name": "limit",
						"schema": {
							"default": 100,
							"type": "integer"
						}
					},
					{
						"description": "Sort key, after folders first. Without it, modifiedAt",
						"in": "query",
						"name": "sort",
						"schema": {
							"$ref": "#/components/schemas/EntrySort"
						}
					},
					{
						"description": "Sort order. Without it, desc, or asc when sorting by name",
						"in": "query",
						"name": "order",
						"schema": {
							"$ref": "#/components/schemas/SortOrder"
						}
					},
					{
						"description": "Only the entry with exactly this name, hidden or not, to check whether a name is taken. Entries in the trash aren't listed.",
						"in": "query",
						"name": "name",
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/EntryListResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "No entry with this ID that the caller can see, with code not_found"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "listEntryChildren",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{id}/content": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nA file. It honours HTTP Range (bytes=START-END): a 206 with just those bytes, or a 416 when they start past the end. A folder is a 400: POST /files/download zips folders.",
				"operationId": "getEntryContent",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getEntryContent",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{parentId}/folders": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesEditController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nCreates a folder. The parent can be a source's top folder. A name already taken, even by an entry in the trash, is a 409 with code conflict.",
				"operationId": "createEntryFolder",
				"parameters": [
					{
						"in": "path",
						"name": "parentId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/FolderCreateDto"
							}
						}
					},
					"description": "Request body for dto.FolderCreateDto",
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/EntryDto"
								}
							}
						},
						"description": "Created"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The caller may only view the folder, or the source doesn't let the server write there, with code forbidden"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "No entry with this ID that the caller can see, with code not_found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The name is taken, with code conflict, or the source can only be read, with code read_only"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The source can't be reached, with code source_offline"
					},
					"507": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The drive or network folder is full, with code no_space"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createEntryFolder",
				"tags": [
					"files"
				]
			}
		},
		"/api/files/{parentId}/upload": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*FilesEditController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nUploads files into a folder, or a source's top folder, streamed: one file part per file. It stops at the first file that fails, and the files before it stay. A name only an entry in the trash has is kept beside it, as \"Report (1).pdf\", whatever conflict says.",
				"operationId": "uploadEntries",
				"parameters": [
					{
						"description": "What to do when a name is taken: keep both, as \"Report (1).pdf\", replace the file, or fail with code conflict",
						"in": "query",
						"name": "conflict",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/ConflictPolicy"
						}
					},
					{
						"in": "path",
						"name": "parentId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"multipart/form-data": {
							"schema": {
								"$ref": "#/components/schemas/UploadDto"
							}
						}
					},
					"description": "Request body for dto.UploadDto",
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UploadResponseDto"
								}
							}
						},
						"description": "Created"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The caller may only view the folder or the file to replace, the source doesn't let the server write there, or an API key without file.update asks to replace, with code forbidden"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "No entry with this ID that the caller can see, with code not_found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "With code conflict: the name is taken and conflict is fail, the name is a folder's, or no free name was found. With code in_use: the file to replace is open elsewhere. With code read_only: the source can only be read"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The file is too big for the source, such as one over 4 GiB on FAT32, with code not_supported"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The source can't be reached, with code source_offline"
					},
					"507": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/CodedProblem"
								}
							}
						},
						"description": "The destination is full, with code no_space"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "uploadEntries",
				"tags": [
					"files"
				]
			}
		},
		"/api/internal": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func9`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteInternalEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryDeleteDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryDeleteDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteInternalEntries",
				"tags": [
					"internal/entries"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "listInternalEntries",
				"parameters": [
					{
						"description": "Parent folder id (omit for root)",
						"in": "query",
						"name": "parentId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Sort field (name/createdAt/modifiedAt/size)",
						"in": "query",
						"name": "sort",
						"schema": {
							"$ref": "#/components/schemas/EntrySortBy"
						}
					},
					{
						"description": "Sort order (asc/desc)",
						"in": "query",
						"name": "order",
						"schema": {
							"$ref": "#/components/schemas/SortOrder"
						}
					},
					{
						"description": "Page number (1-based)",
						"in": "query",
						"name": "page",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Items per page",
						"in": "query",
						"name": "pageSize",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Include trashed entries",
						"in": "query",
						"name": "trashed",
						"schema": {
							"type": "boolean"
						}
					},
					{
						"description": "Only trashed entries",
						"in": "query",
						"name": "trashedOnly",
						"schema": {
							"type": "boolean"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryListResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "listInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/check": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "checkInternalEntry",
				"parameters": [
					{
						"description": "Parent folder id",
						"in": "query",
						"name": "parentId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Filename to check",
						"in": "query",
						"name": "filename",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryCheckResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "checkInternalEntry",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/download": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func14`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "downloadInternalEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryDownloadDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryDownloadDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "downloadInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/folder": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func11`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createInternalFolder",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryFolderCreateDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryFolderCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createInternalFolder",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/restore": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "restoreInternalEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryRestoreDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryRestoreDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "restoreInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/shared-with-me": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getSharedInternalEntries",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/SharedWithMeEntryDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getSharedInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/trash": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "trashInternalEntries",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryTrashDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryTrashDto",
					"required": true
				},
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "trashInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/trash/clear": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func8`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "clearInternalEntryTrash",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "clearInternalEntryTrash",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/trash/restore-all": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "restoreAllInternalEntries",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "restoreAllInternalEntries",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/upload": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func10`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "uploadInternalEntry",
				"requestBody": {
					"content": {
						"multipart/form-data": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryUploadDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryUploadDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryUploadResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "uploadInternalEntry",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/{id}": {
			"patch": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func12`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "renameInternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryRenameDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryRenameDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "renameInternalEntry",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/{id}/breadcrumbs": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getInternalEntryBreadcrumbs",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/BreadcrumbDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getInternalEntryBreadcrumbs",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/{id}/download": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func15`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "downloadInternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/octet-stream": {
								"schema": {
									"format": "binary",
									"type": "string"
								}
							}
						},
						"description": "Binary file stream"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "downloadInternalEntry",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/internal/{id}/move": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*InternalEntryController).RegisterRoutes.func13`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "moveInternalEntry",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InternalEntryMoveDto"
							}
						}
					},
					"description": "Request body for dto.InternalEntryMoveDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InternalEntryDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "moveInternalEntry",
				"tags": [
					"internal/entries"
				]
			}
		},
		"/api/linked-devices": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nList devices paired to this server over the tunnel. Users see their own devices; admins see all, including devices paired during initial setup.",
				"operationId": "getLinkedDevices",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LinkedDeviceListDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getLinkedDevices",
				"tags": [
					"linked-devices"
				]
			}
		},
		"/api/linked-devices/flows": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nOpen a linking flow and return a pairing URL to show as a QR code. The URL is valid only until the device is added or the flow is closed.",
				"operationId": "createLinkFlow",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/LinkFlowCreateDto"
							}
						}
					},
					"description": "Request body for dto.LinkFlowCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LinkFlowDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The tunnel gateway is unavailable"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createLinkFlow",
				"tags": [
					"linked-devices"
				]
			}
		},
		"/api/linked-devices/flows/{flowId}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nWithdraw the pairing URL. Call this when the user leaves the linking screen.",
				"operationId": "closeLinkFlow",
				"parameters": [
					{
						"in": "path",
						"name": "flowId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The device or flow belongs to another user"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The tunnel gateway is unavailable"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "closeLinkFlow",
				"tags": [
					"linked-devices"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nPoll while the code is on screen. Once the device is added the flow closes and this reports open false.",
				"operationId": "getLinkFlow",
				"parameters": [
					{
						"in": "path",
						"name": "flowId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LinkFlowStateDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The device or flow belongs to another user"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The tunnel gateway is unavailable"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getLinkFlow",
				"tags": [
					"linked-devices"
				]
			}
		},
		"/api/linked-devices/identity": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func1`\n\n---\n\nPublic gateway identity for recognizing an already linked server. Does not authorize access or expose pairing codes.",
				"operationId": "getTunnelIdentity",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/TunnelIdentityDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getTunnelIdentity",
				"tags": [
					"linked-devices"
				]
			}
		},
		"/api/linked-devices/{publicKey}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*LinkedDeviceController).RegisterRoutes.func6`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRevoke a device using its unpadded base64url public key. URL-encoded standard base64 is also accepted for older clients. It loses tunnel access immediately and its live connection is dropped. The device can be linked again later.",
				"operationId": "removeLinkedDevice",
				"parameters": [
					{
						"in": "path",
						"name": "publicKey",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"403": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The device or flow belongs to another user"
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "No such linked device"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "The tunnel gateway is unavailable"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "removeLinkedDevice",
				"tags": [
					"linked-devices"
				]
			}
		},
		"/api/onboarding/disconnect": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*OnboardingController).RegisterRoutes.func2`\n\n---\n\n",
				"operationId": "disconnect",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/OnboardingDisconnectDto"
							}
						}
					},
					"description": "Request body for dto.OnboardingDisconnectDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "disconnect",
				"tags": [
					"onboarding"
				]
			}
		},
		"/api/onboarding/heartbeat": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*OnboardingController).RegisterRoutes.func1`\n\n---\n\n",
				"operationId": "heartbeat",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/OnboardingHeartbeatDto"
							}
						}
					},
					"description": "Request body for dto.OnboardingHeartbeatDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "heartbeat",
				"tags": [
					"onboarding"
				]
			}
		},
		"/api/onboarding/state": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*OnboardingController).RegisterRoutes.func3`\n\n---\n\n",
				"operationId": "getState",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/OnboardingStateDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getState",
				"tags": [
					"onboarding"
				]
			}
		},
		"/api/provisioning/current-network": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ProvisioningController).RegisterRoutes.func3`\n\n---\n\n",
				"operationId": "getCurrentNetwork",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CurrentNetworkDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getCurrentNetwork",
				"tags": [
					"provisioning"
				]
			}
		},
		"/api/provisioning/networks": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ProvisioningController).RegisterRoutes.func2`\n\n---\n\n",
				"operationId": "getNetworks",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/NetworkListDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getNetworks",
				"tags": [
					"provisioning"
				]
			}
		},
		"/api/provisioning/status": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ProvisioningController).RegisterRoutes.func1`\n\n---\n\n",
				"operationId": "getStatus",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ProvisioningStatusDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getStatus",
				"tags": [
					"provisioning"
				]
			}
		},
		"/api/search": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SearchController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "search",
				"parameters": [
					{
						"description": "Name query (trigram)",
						"in": "query",
						"name": "name",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Media type filter",
						"in": "query",
						"name": "mediaType",
						"schema": {
							"$ref": "#/components/schemas/MediaType"
						}
					},
					{
						"description": "MIME type filter",
						"in": "query",
						"name": "mimeType",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Sort field",
						"in": "query",
						"name": "sort",
						"schema": {
							"$ref": "#/components/schemas/EntrySortBy"
						}
					},
					{
						"description": "Sort order (asc/desc)",
						"in": "query",
						"name": "order",
						"schema": {
							"$ref": "#/components/schemas/SortOrder"
						}
					},
					{
						"description": "Page number (1-based)",
						"in": "query",
						"name": "page",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Items per page",
						"in": "query",
						"name": "pageSize",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Minimum size in bytes",
						"in": "query",
						"name": "minSize",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Maximum size in bytes",
						"in": "query",
						"name": "maxSize",
						"schema": {
							"type": "integer"
						}
					},
					{
						"description": "Modified after (RFC3339)",
						"in": "query",
						"name": "modifiedAfter",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Modified before (RFC3339)",
						"in": "query",
						"name": "modifiedBefore",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/EntrySearchResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "search",
				"tags": [
					"search"
				]
			}
		},
		"/api/server/about": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getAboutInfo",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerAboutResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getAboutInfo",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/config": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func6`\n\n---\n\n",
				"operationId": "getServerConfig",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerConfigDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getServerConfig",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/features": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func5`\n\n---\n\n",
				"operationId": "getServerFeatures",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerFeaturesDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getServerFeatures",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/hostname": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func9`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getServerHostname",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerHostnameDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getServerHostname",
				"tags": [
					"server"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func10`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateServerHostname",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ServerHostnameUpdateDto"
							}
						}
					},
					"description": "Request body for dto.ServerHostnameUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerHostnameDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateServerHostname",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/locale": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func7`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getServerLocale",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerLocaleDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getServerLocale",
				"tags": [
					"server"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func8`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateServerLocale",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ServerLocaleUpdateDto"
							}
						}
					},
					"description": "Request body for dto.ServerLocaleUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerLocaleDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateServerLocale",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/ping": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func2`\n\n---\n\n",
				"operationId": "pingServer",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerPingResponse"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "pingServer",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/system-version": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getSystemVersion",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SystemVersionResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getSystemVersion",
				"tags": [
					"server"
				]
			}
		},
		"/api/server/version": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ServerController).RegisterRoutes.func3`\n\n---\n\n",
				"operationId": "getServerVersion",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ServerVersionResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"summary": "getServerVersion",
				"tags": [
					"server"
				]
			}
		},
		"/api/sessions": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SessionController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteAllSessions",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteAllSessions",
				"tags": [
					"sessions"
				]
			},
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SessionController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getSessions",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/SessionResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getSessions",
				"tags": [
					"sessions"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SessionController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createSession",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SessionCreateDto"
							}
						}
					},
					"description": "Request body for dto.SessionCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SessionCreateResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createSession",
				"tags": [
					"sessions"
				]
			}
		},
		"/api/sessions/{id}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SessionController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteSession",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteSession",
				"tags": [
					"sessions"
				]
			}
		},
		"/api/share": {
			"patch": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ShareController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateShare",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ShareUpdateDto"
							}
						}
					},
					"description": "Request body for dto.ShareUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ShareResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateShare",
				"tags": [
					"share"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ShareController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "createShare",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ShareCreateDto"
							}
						}
					},
					"description": "Request body for dto.ShareCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ShareResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "createShare",
				"tags": [
					"share"
				]
			}
		},
		"/api/share/{id}": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ShareController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "deleteShare",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "deleteShare",
				"tags": [
					"share"
				]
			}
		},
		"/api/share/{id}/browse": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ShareController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "browseShare",
				"parameters": [
					{
						"description": "Node id within the shared folder",
						"in": "query",
						"name": "nodeId",
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ShareBrowseResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "browseShare",
				"tags": [
					"share"
				]
			}
		},
		"/api/share/{id}/shares": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*ShareController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "sharesForNode",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/ShareResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "sharesForNode",
				"tags": [
					"share"
				]
			}
		},
		"/api/system/info": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SystemController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nThe device name, boot id, installed update bundle version and installed hardware, read when the request is served. A value the device cannot report is empty or zero.",
				"operationId": "getSystemInfo",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SystemInfoDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getSystemInfo",
				"tags": [
					"system"
				]
			}
		},
		"/api/system/power-off": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SystemController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nPowers the device off about a second after responding; it stays off until its power button is pressed, and a staged OS update is installed during shutdown. Updates and other restarts or power offs are then refused until the device goes down, or for a minute if it stays up.",
				"operationId": "powerOffSystem",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "APPLY_IN_PROGRESS: an update is being applied. SHUTTING_DOWN: a restart or power off was already accepted."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "NOT_SUPPORTED: disabled on a development host"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "powerOffSystem",
				"tags": [
					"system"
				]
			}
		},
		"/api/system/restart": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SystemController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRestarts the device about a second after responding, finishing any staged update. Updates and other restarts or power offs are then refused until the device goes down, or for a minute if it stays up. Poll GET /system/info until bootId changes to learn that the restart finished.",
				"operationId": "restartSystem",
				"responses": {
					"204": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/unknown-interface"
								}
							}
						},
						"description": "No Content"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "APPLY_IN_PROGRESS: an update is being applied. SHUTTING_DOWN: a restart or power off was already accepted."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"501": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "NOT_SUPPORTED: disabled on a development host"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "restartSystem",
				"tags": [
					"system"
				]
			}
		},
		"/api/system/ssh": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SSHController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nWhether SSH is on, the keys that sign in to the SSH account with who added each, the device's host keys and its LAN addresses.",
				"operationId": "getSshAccess",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SSHAccessResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_UNAVAILABLE: the OS has no SSH account yet, or sshd failed to start, stop or restart"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getSshAccess",
				"tags": [
					"system"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SSHController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nTurns SSH on, now and at every boot, or off. Turning it off also ends every open SSH session.",
				"operationId": "setSshAccess",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SSHAccessUpdateDto"
							}
						}
					},
					"description": "Request body for dto.SSHAccessUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SSHAccessResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_UNAVAILABLE: the OS has no SSH account yet, or sshd failed to start, stop or restart"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setSshAccess",
				"tags": [
					"system"
				]
			}
		},
		"/api/system/ssh/keys": {
			"delete": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SSHController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nRemoves a key and ends every open SSH session, since a session can't be traced to the key it used.",
				"operationId": "removeSshKey",
				"parameters": [
					{
						"description": "The key's SHA256 fingerprint; a query parameter because it can contain / and +",
						"in": "query",
						"name": "fingerprint",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SSHAccessResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_KEY_NOT_FOUND: no key has that fingerprint"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_UNAVAILABLE: the OS has no SSH account yet, or sshd failed to start, stop or restart"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "removeSshKey",
				"tags": [
					"system"
				]
			},
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*SSHController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nAdds a public key under the given name, recorded as added by the caller, or by an API key's owner. The key is removed when that user stops being an admin.",
				"operationId": "addSshKey",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SSHKeyCreateDto"
							}
						}
					},
					"description": "Request body for dto.SSHKeyCreateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SSHAccessResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_KEY_INVALID: not a single public key without options. SSH_KEY_PRIVATE: a private key was given. SSH_KEY_TYPE_UNSUPPORTED: not Ed25519, ECDSA, a security key, or RSA of 2048 bits or more. SSH_KEY_NAME_INVALID: the name isn't 1 to 64 characters without control characters."
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_KEY_EXISTS: the key is already added. SSH_KEY_LIMIT: 20 keys are already added."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "SSH_UNAVAILABLE: the OS has no SSH account yet, or sshd failed to start, stop or restart"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "addSshKey",
				"tags": [
					"system"
				]
			}
		},
		"/api/tv/display/monitors": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*DisplayController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nMonitors connected to the TV with their active state, current mode and supported modes.",
				"operationId": "getDisplaySettings",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DisplaySettingsDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "DISPLAY_SERVER_NOT_RUNNING: the TV display server is not running"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getDisplaySettings",
				"tags": [
					"tv/display"
				]
			}
		},
		"/api/tv/display/monitors/{monitorId}": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*DisplayController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nMakes the monitor the active TV output and/or changes its mode, then returns all monitors.",
				"operationId": "updateMonitor",
				"parameters": [
					{
						"description": "Monitor id",
						"in": "path",
						"name": "monitorId",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MonitorUpdateDto"
							}
						}
					},
					"description": "Request body for dto.MonitorUpdateDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DisplaySettingsDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "BAD_REQUEST: nothing to change, or the mode is not supported by the monitor"
					},
					"404": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "MONITOR_NOT_FOUND: no connected monitor has this id"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					},
					"503": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "DISPLAY_SERVER_NOT_RUNNING: the TV display server is not running"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateMonitor",
				"tags": [
					"tv/display"
				]
			}
		},
		"/api/updates/apply": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UpdatesController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nStarts applying the available update in the background and returns 202 with the update state, which shows the apply as pending unless it already ended. Follow it through on_update_state while the update.state topic is live; otherwise poll GET /updates/status.",
				"operationId": "applyUpdate",
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UpdateStateResponseDto"
								}
							}
						},
						"description": "Accepted"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"409": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "REBOOT_REQUIRED: a staged update is awaiting reboot. APPLY_IN_PROGRESS: an apply is already running. NO_UPDATE_AVAILABLE: already on the latest version. SHUTTING_DOWN: a restart or power off was accepted."
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "applyUpdate",
				"tags": [
					"updates"
				]
			}
		},
		"/api/updates/check": {
			"post": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UpdatesController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nPolls the registries now and returns the refreshed update state. An unreachable registry is reported in check.error, not as an error response; during an apply it returns the state without polling.",
				"operationId": "checkForUpdates",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UpdateStateResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "checkForUpdates",
				"tags": [
					"updates"
				]
			}
		},
		"/api/updates/settings": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UpdatesController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nChannel, manifest URL, auto-update toggle, inactive hours, and poll interval.",
				"operationId": "getUpdateSettings",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UpdateSettingsDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getUpdateSettings",
				"tags": [
					"updates"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UpdatesController).RegisterRoutes.func5`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nReplaces the update settings (channel, manifest URL, auto-update, inactive hours, poll interval) and returns the update state.",
				"operationId": "setUpdateSettings",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UpdateSettingsDto"
							}
						}
					},
					"description": "Request body for dto.UpdateSettingsDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UpdateStateResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setUpdateSettings",
				"tags": [
					"updates"
				]
			}
		},
		"/api/updates/status": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UpdatesController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\nThe device's last known update state, served from cache so it is cheap to poll.",
				"operationId": "getUpdateState",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UpdateStateResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getUpdateState",
				"tags": [
					"updates"
				]
			}
		},
		"/api/users": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getUsers",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/UserResponseDto"
									},
									"type": "array"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getUsers",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getMyUser",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getMyUser",
				"tags": [
					"users"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "updateMyUser",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserUpdateMeDto"
							}
						}
					},
					"description": "Request body for dto.UserUpdateMeDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserAdminResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "updateMyUser",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-config": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaConfigController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getMyMediaConfig",
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserMediaConfigDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getMyMediaConfig",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-config/pause-on-call": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaConfigController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "setMyPauseOnCall",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MediaPauseOnCallDto"
							}
						}
					},
					"description": "Request body for dto.MediaPauseOnCallDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserMediaConfigDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setMyPauseOnCall",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-config/resume-after-call": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaConfigController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "setMyResumeAfterCall",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MediaResumeAfterCallDto"
							}
						}
					},
					"description": "Request body for dto.MediaResumeAfterCallDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserMediaConfigDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setMyResumeAfterCall",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-track-selection": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaTrackSelectionController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getMyMediaTrackSelection",
				"parameters": [
					{
						"description": "Where the file lives",
						"in": "query",
						"name": "sourceType",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/EntrySourceType"
						}
					},
					{
						"description": "Internal entry id",
						"in": "query",
						"name": "entryId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "External mount id",
						"in": "query",
						"name": "mountId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Path within the external mount",
						"in": "query",
						"name": "path",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MediaTrackSelectionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getMyMediaTrackSelection",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-track-selection/audio": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaTrackSelectionController).RegisterRoutes.func3`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "setMyMediaAudioTrack",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MediaTrackSelectionSaveDto"
							}
						}
					},
					"description": "Request body for dto.MediaTrackSelectionSaveDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MediaTrackSelectionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setMyMediaAudioTrack",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-track-selection/subtitle": {
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaTrackSelectionController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "setMyMediaSubtitleTrack",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MediaTrackSelectionSaveDto"
							}
						}
					},
					"description": "Request body for dto.MediaTrackSelectionSaveDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MediaTrackSelectionDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "setMyMediaSubtitleTrack",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/me/media-watch-progress": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaWatchProgressController).RegisterRoutes.func1`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getMyMediaWatchProgress",
				"parameters": [
					{
						"description": "Where the video lives",
						"in": "query",
						"name": "sourceType",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/EntrySourceType"
						}
					},
					{
						"description": "Internal entry id",
						"in": "query",
						"name": "entryId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "External mount id",
						"in": "query",
						"name": "mountId",
						"schema": {
							"type": "string"
						}
					},
					{
						"description": "Path within the external mount",
						"in": "query",
						"name": "path",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MediaWatchProgressDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getMyMediaWatchProgress",
				"tags": [
					"users"
				]
			},
			"put": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserMediaWatchProgressController).RegisterRoutes.func2`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "saveMyMediaWatchProgress",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/MediaWatchProgressSaveDto"
							}
						}
					},
					"description": "Request body for dto.MediaWatchProgressSaveDto",
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MediaWatchProgressDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "saveMyMediaWatchProgress",
				"tags": [
					"users"
				]
			}
		},
		"/api/users/{id}": {
			"get": {
				"description": "#### Controller: \n\n`fhs/server/internal/controller.(*UserController).RegisterRoutes.func4`\n\n#### Middlewares:\n\n- `fhs/server/internal/auth.guard.func1`\n\n---\n\n",
				"operationId": "getUser",
				"parameters": [
					{
						"in": "path",
						"name": "id",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserResponseDto"
								}
							}
						},
						"description": "OK"
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Bad Request _(validation or deserialization error)_"
					},
					"500": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/HTTPError"
								}
							}
						},
						"description": "Internal Server Error _(panics)_"
					}
				},
				"security": [
					{
						"bearer": []
					},
					{
						"cookie": []
					},
					{
						"api_key": []
					}
				],
				"summary": "getUser",
				"tags": [
					"users"
				]
			}
		}
	},
	"tags": [
		{
			"name": "api-keys"
		},
		{
			"name": "apps"
		},
		{
			"name": "audio"
		},
		{
			"name": "authentication"
		},
		{
			"name": "cast"
		},
		{
			"name": "external/drives"
		},
		{
			"name": "external/entries"
		},
		{
			"name": "external/mounts"
		},
		{
			"name": "files"
		},
		{
			"name": "internal/entries"
		},
		{
			"name": "linked-devices"
		},
		{
			"name": "onboarding"
		},
		{
			"name": "provisioning"
		},
		{
			"name": "search"
		},
		{
			"name": "server"
		},
		{
			"name": "sessions"
		},
		{
			"name": "share"
		},
		{
			"name": "system"
		},
		{
			"name": "tv/display"
		},
		{
			"name": "updates"
		},
		{
			"name": "users"
		},
		{
			"name": "users/admin"
		}
	]
}