{
  "components": {
    "schemas": {
      "AcquisitionCapabilities": {
        "properties": {
          "arr_commands": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "propertyNames": {
              "$ref": "#/components/schemas/EndpointKind"
            },
            "title": "Arr Commands",
            "type": "object"
          },
          "arr_kinds": {
            "items": {
              "$ref": "#/components/schemas/EndpointKind"
            },
            "title": "Arr Kinds",
            "type": "array"
          },
          "download_client_kinds": {
            "items": {
              "$ref": "#/components/schemas/EndpointKind"
            },
            "title": "Download Client Kinds",
            "type": "array"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "endpoint_kinds": {
            "items": {
              "$ref": "#/components/schemas/EndpointKind"
            },
            "title": "Endpoint Kinds",
            "type": "array"
          },
          "indexer_kinds": {
            "items": {
              "$ref": "#/components/schemas/EndpointKind"
            },
            "title": "Indexer Kinds",
            "type": "array"
          },
          "managed_downloads_ready": {
            "default": false,
            "title": "Managed Downloads Ready",
            "type": "boolean"
          }
        },
        "required": [
          "endpoint_kinds",
          "indexer_kinds",
          "download_client_kinds",
          "arr_kinds",
          "arr_commands"
        ],
        "title": "AcquisitionCapabilities",
        "type": "object"
      },
      "AcquisitionEndpoint": {
        "properties": {
          "base_url": {
            "title": "Base Url",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "download_root": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Root"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "endpoint_id": {
            "format": "uuid",
            "title": "Endpoint Id",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/EndpointKind"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          }
        },
        "required": [
          "endpoint_id",
          "name",
          "kind",
          "base_url",
          "enabled"
        ],
        "title": "AcquisitionEndpoint",
        "type": "object"
      },
      "AcquisitionEndpointCreate": {
        "properties": {
          "api_key": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key"
          },
          "base_url": {
            "format": "uri",
            "maxLength": 2083,
            "minLength": 1,
            "title": "Base Url",
            "type": "string"
          },
          "download_root": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Root"
          },
          "kind": {
            "$ref": "#/components/schemas/EndpointKind"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "password": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "username": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "required": [
          "name",
          "kind",
          "base_url"
        ],
        "title": "AcquisitionEndpointCreate",
        "type": "object"
      },
      "AcquisitionEndpointTest": {
        "properties": {
          "api_key": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key"
          },
          "base_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Url"
          },
          "endpoint_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint Id"
          },
          "kind": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EndpointKind"
              },
              {
                "type": "null"
              }
            ]
          },
          "password": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "username": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "title": "AcquisitionEndpointTest",
        "type": "object"
      },
      "AcquisitionEndpointTestResult": {
        "properties": {
          "ok": {
            "title": "Ok",
            "type": "boolean"
          }
        },
        "required": [
          "ok"
        ],
        "title": "AcquisitionEndpointTestResult",
        "type": "object"
      },
      "AcquisitionEndpointUpdate": {
        "properties": {
          "api_key": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key"
          },
          "base_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Url"
          },
          "download_root": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Root"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "password": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "username": {
            "anyOf": [
              {
                "format": "password",
                "type": "string",
                "writeOnly": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "title": "AcquisitionEndpointUpdate",
        "type": "object"
      },
      "AcquisitionFileCandidate": {
        "properties": {
          "index": {
            "title": "Index",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "priority": {
            "title": "Priority",
            "type": "integer"
          },
          "progress_basis_points": {
            "title": "Progress Basis Points",
            "type": "integer"
          },
          "size_bytes": {
            "title": "Size Bytes",
            "type": "integer"
          },
          "supported": {
            "title": "Supported",
            "type": "boolean"
          }
        },
        "required": [
          "index",
          "name",
          "size_bytes",
          "progress_basis_points",
          "priority",
          "supported"
        ],
        "title": "AcquisitionFileCandidate",
        "type": "object"
      },
      "AcquisitionFileSelectionRequest": {
        "properties": {
          "file_index": {
            "minimum": 0.0,
            "title": "File Index",
            "type": "integer"
          }
        },
        "required": [
          "file_index"
        ],
        "title": "AcquisitionFileSelectionRequest",
        "type": "object"
      },
      "AcquisitionJob": {
        "properties": {
          "book_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Id"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cancelled At"
          },
          "client_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Hash"
          },
          "client_reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Reference"
          },
          "client_state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client State"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "download_speed_bytes_per_second": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Speed Bytes Per Second"
          },
          "downloaded_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Downloaded Bytes"
          },
          "endpoint_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint Id"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "eta_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Eta Seconds"
          },
          "job_id": {
            "format": "uuid",
            "title": "Job Id",
            "type": "string"
          },
          "next_poll_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Poll At"
          },
          "progress_basis_points": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Progress Basis Points"
          },
          "retry_count": {
            "default": 0,
            "title": "Retry Count",
            "type": "integer"
          },
          "rule_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rule Id"
          },
          "selected_file_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Selected File Path"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "submitted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Submitted At"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "total_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Bytes"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "job_id",
          "endpoint_id",
          "rule_id",
          "book_id",
          "title",
          "status"
        ],
        "title": "AcquisitionJob",
        "type": "object"
      },
      "AcquisitionJobPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AcquisitionJob"
            },
            "title": "Items",
            "type": "array"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "title": "AcquisitionJobPage",
        "type": "object"
      },
      "AcquisitionRule": {
        "properties": {
          "download_client_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Client Id"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "endpoint_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint Ids"
          },
          "filters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filters"
          },
          "last_run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Run At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "rule_id": {
            "format": "uuid",
            "title": "Rule Id",
            "type": "string"
          }
        },
        "required": [
          "rule_id",
          "name",
          "query",
          "download_client_id",
          "enabled"
        ],
        "title": "AcquisitionRule",
        "type": "object"
      },
      "AcquisitionRuleCreate": {
        "properties": {
          "download_client_id": {
            "format": "uuid",
            "title": "Download Client Id",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "endpoint_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint Ids"
          },
          "filters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filters"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "query": {
            "maxLength": 500,
            "minLength": 1,
            "title": "Query",
            "type": "string"
          }
        },
        "required": [
          "name",
          "query",
          "download_client_id"
        ],
        "title": "AcquisitionRuleCreate",
        "type": "object"
      },
      "Annotation": {
        "description": "Annotation response schema.",
        "properties": {
          "annotation_id": {
            "format": "uuid",
            "title": "Annotation Id",
            "type": "string"
          },
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "book_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Title"
          },
          "chapter_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Index"
          },
          "chapter_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Title"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "end_position": {
            "title": "End Position",
            "type": "string"
          },
          "highlight_color": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Highlight Color",
            "type": "string"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "page_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Number"
          },
          "selected_text": {
            "title": "Selected Text",
            "type": "string"
          },
          "start_position": {
            "title": "Start Position",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "annotation_id",
          "book_id",
          "selected_text",
          "highlight_color",
          "start_position",
          "end_position"
        ],
        "title": "Annotation",
        "type": "object"
      },
      "AnnotationList": {
        "description": "Paginated annotation list response.",
        "properties": {
          "annotations": {
            "items": {
              "$ref": "#/components/schemas/Annotation"
            },
            "title": "Annotations",
            "type": "array"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "annotations",
          "pagination"
        ],
        "title": "AnnotationList",
        "type": "object"
      },
      "ArrCommandRequest": {
        "description": "A Servarr command and the IDs scoped to that application's library.",
        "properties": {
          "command": {
            "maxLength": 80,
            "minLength": 1,
            "title": "Command",
            "type": "string"
          },
          "ids": {
            "items": {
              "type": "integer"
            },
            "maxItems": 100,
            "title": "Ids",
            "type": "array"
          }
        },
        "required": [
          "command"
        ],
        "title": "ArrCommandRequest",
        "type": "object"
      },
      "AuthTokens": {
        "description": "Authentication tokens response.",
        "properties": {
          "access_token": {
            "title": "Access Token",
            "type": "string"
          },
          "expires_in": {
            "description": "Access token expiry in seconds",
            "examples": [
              3600
            ],
            "title": "Expires In",
            "type": "integer"
          },
          "refresh_token": {
            "title": "Refresh Token",
            "type": "string"
          },
          "token_type": {
            "default": "Bearer",
            "title": "Token Type",
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "access_token",
          "refresh_token",
          "expires_in",
          "user"
        ],
        "title": "AuthTokens",
        "type": "object"
      },
      "AuthorizationUrlResponse": {
        "description": "Authorization URL returned to the client for browser login.",
        "properties": {
          "authorization_url": {
            "title": "Authorization Url",
            "type": "string"
          }
        },
        "required": [
          "authorization_url"
        ],
        "title": "AuthorizationUrlResponse",
        "type": "object"
      },
      "BatchCreateRequest": {
        "properties": {
          "books": {
            "items": {
              "$ref": "#/components/schemas/BookCreate"
            },
            "title": "Books",
            "type": "array"
          }
        },
        "required": [
          "books"
        ],
        "title": "BatchCreateRequest",
        "type": "object"
      },
      "BatchCreateResponse": {
        "properties": {
          "created": {
            "items": {
              "$ref": "#/components/schemas/Book"
            },
            "title": "Created",
            "type": "array"
          },
          "errors": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Errors",
            "type": "array"
          }
        },
        "required": [
          "created",
          "errors"
        ],
        "title": "BatchCreateResponse",
        "type": "object"
      },
      "BatchDeleteRequest": {
        "properties": {
          "book_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Book Ids",
            "type": "array"
          },
          "delete_files": {
            "default": false,
            "title": "Delete Files",
            "type": "boolean"
          }
        },
        "required": [
          "book_ids"
        ],
        "title": "BatchDeleteRequest",
        "type": "object"
      },
      "BatchDeleteResponse": {
        "properties": {
          "deleted_count": {
            "title": "Deleted Count",
            "type": "integer"
          },
          "errors": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Errors",
            "type": "array"
          }
        },
        "required": [
          "deleted_count",
          "errors"
        ],
        "title": "BatchDeleteResponse",
        "type": "object"
      },
      "BatchSubmissionItem": {
        "properties": {
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "index": {
            "title": "Index",
            "type": "integer"
          },
          "job": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AcquisitionJob"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "index"
        ],
        "title": "BatchSubmissionItem",
        "type": "object"
      },
      "BatchSubmissionResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BatchSubmissionItem"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "BatchSubmissionResponse",
        "type": "object"
      },
      "BatchSubmitRequest": {
        "properties": {
          "endpoint_id": {
            "format": "uuid",
            "title": "Endpoint Id",
            "type": "string"
          },
          "release_tokens": {
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Release Tokens",
            "type": "array"
          }
        },
        "required": [
          "endpoint_id",
          "release_tokens"
        ],
        "title": "BatchSubmitRequest",
        "type": "object"
      },
      "BatchUpdateRequest": {
        "properties": {
          "add_shelf_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Add Shelf Ids"
          },
          "add_tag_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Add Tag Ids"
          },
          "book_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Book Ids",
            "type": "array"
          },
          "remove_shelf_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Shelf Ids"
          },
          "remove_tag_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Tag Ids"
          },
          "updates": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updates"
          }
        },
        "required": [
          "book_ids"
        ],
        "title": "BatchUpdateRequest",
        "type": "object"
      },
      "BatchUpdateResponse": {
        "properties": {
          "errors": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Errors",
            "type": "array"
          },
          "updated_count": {
            "title": "Updated Count",
            "type": "integer"
          }
        },
        "required": [
          "updated_count",
          "errors"
        ],
        "title": "BatchUpdateResponse",
        "type": "object"
      },
      "Body_upload_book_cover_v1_books__book_id__cover_put": {
        "properties": {
          "file": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File"
          }
        },
        "title": "Body_upload_book_cover_v1_books__book_id__cover_put",
        "type": "object"
      },
      "Body_upload_file_v1_files_upload_post": {
        "properties": {
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "title": "Body_upload_file_v1_files_upload_post",
        "type": "object"
      },
      "Body_upload_media_v1_media_post": {
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          }
        },
        "required": [
          "book_id",
          "kind",
          "file"
        ],
        "title": "Body_upload_media_v1_media_post",
        "type": "object"
      },
      "Book": {
        "description": "Full book response schema.",
        "properties": {
          "added_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Added At"
          },
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "co_authors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Co Authors"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "current_cfi": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Cfi"
          },
          "current_page": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Page"
          },
          "current_position": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Position"
          },
          "custom_metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Metadata"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "file_format": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FileFormat"
              },
              {
                "type": "null"
              }
            ]
          },
          "file_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Hash"
          },
          "file_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Path"
          },
          "file_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size"
          },
          "is_favorite": {
            "default": false,
            "title": "Is Favorite",
            "type": "boolean"
          },
          "is_ocr_processed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Ocr Processed"
          },
          "is_physical": {
            "default": false,
            "title": "Is Physical",
            "type": "boolean"
          },
          "isbn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn"
          },
          "isbn13": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn13"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "en"
            ],
            "title": "Language"
          },
          "last_read_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Read At"
          },
          "lent_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lent At"
          },
          "lent_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lent To"
          },
          "ocr_confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ocr Confidence"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "physical_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Physical Location"
          },
          "publication_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publication Date"
          },
          "publisher": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publisher"
          },
          "rating": {
            "anyOf": [
              {
                "maximum": 5.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "reading_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "series_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Id"
          },
          "series_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Name"
          },
          "series_number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Number"
          },
          "shelves": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ShelfSummary"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Shelves"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "storage_backend_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Backend Id"
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Tag"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "book_id",
          "title"
        ],
        "title": "Book",
        "type": "object"
      },
      "BookBreakdown": {
        "description": "Per-book reading statistics.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "pages_read": {
            "title": "Pages Read",
            "type": "integer"
          },
          "reading_time_minutes": {
            "title": "Reading Time Minutes",
            "type": "integer"
          },
          "sessions_count": {
            "title": "Sessions Count",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "book_id",
          "title",
          "reading_time_minutes",
          "pages_read",
          "sessions_count"
        ],
        "title": "BookBreakdown",
        "type": "object"
      },
      "BookCreate": {
        "description": "Book creation request.",
        "properties": {
          "author": {
            "maxLength": 255,
            "title": "Author",
            "type": "string"
          },
          "co_authors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Co Authors"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "custom_metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Metadata"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "file_format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Format"
          },
          "file_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Hash"
          },
          "file_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Path returned from file upload",
            "title": "File Path"
          },
          "file_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size"
          },
          "is_physical": {
            "default": false,
            "title": "Is Physical",
            "type": "boolean"
          },
          "isbn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn"
          },
          "isbn13": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn13"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "en",
            "title": "Language"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "physical_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Physical Location"
          },
          "publication_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publication Date"
          },
          "publisher": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publisher"
          },
          "series_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Id"
          },
          "series_number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Number"
          },
          "shelf_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Shelf Ids"
          },
          "storage_backend_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Backend Id"
          },
          "subtitle": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle"
          },
          "tag_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "maxItems": 10,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Ids"
          },
          "title": {
            "maxLength": 500,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "author"
        ],
        "title": "BookCreate",
        "type": "object"
      },
      "BookList": {
        "description": "Paginated book list response.",
        "properties": {
          "books": {
            "items": {
              "$ref": "#/components/schemas/Book"
            },
            "title": "Books",
            "type": "array"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "books",
          "pagination"
        ],
        "title": "BookList",
        "type": "object"
      },
      "BookSummary": {
        "description": "Minimal book information for lists.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "current_position": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Position"
          },
          "is_favorite": {
            "default": false,
            "title": "Is Favorite",
            "type": "boolean"
          },
          "rating": {
            "anyOf": [
              {
                "maximum": 5.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "reading_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "book_id",
          "title"
        ],
        "title": "BookSummary",
        "type": "object"
      },
      "BookUpdate": {
        "description": "Book update request.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "co_authors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Co Authors"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "custom_metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Metadata"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_favorite": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Favorite"
          },
          "is_physical": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Physical"
          },
          "isbn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn"
          },
          "isbn13": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn13"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "lent_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lent At"
          },
          "lent_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lent To"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "physical_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Physical Location"
          },
          "publication_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publication Date"
          },
          "publisher": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publisher"
          },
          "rating": {
            "anyOf": [
              {
                "maximum": 5.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "reading_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "series_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Id"
          },
          "series_number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series Number"
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "BookUpdate",
        "type": "object"
      },
      "Bookmark": {
        "description": "Bookmark response schema.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "bookmark_id": {
            "format": "uuid",
            "title": "Bookmark Id",
            "type": "string"
          },
          "chapter_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Title"
          },
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "page_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Number"
          },
          "position": {
            "title": "Position",
            "type": "string"
          }
        },
        "required": [
          "bookmark_id",
          "book_id",
          "position"
        ],
        "title": "Bookmark",
        "type": "object"
      },
      "BookmarkList": {
        "description": "Bookmark list response.",
        "properties": {
          "bookmarks": {
            "items": {
              "$ref": "#/components/schemas/Bookmark"
            },
            "title": "Bookmarks",
            "type": "array"
          }
        },
        "required": [
          "bookmarks"
        ],
        "title": "BookmarkList",
        "type": "object"
      },
      "ChangePasswordRequest": {
        "description": "Password change request.",
        "properties": {
          "current_password": {
            "title": "Current Password",
            "type": "string"
          },
          "new_password": {
            "minLength": 8,
            "title": "New Password",
            "type": "string"
          }
        },
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "ChangePasswordRequest",
        "type": "object"
      },
      "ConnectionStatus": {
        "description": "Storage backend connection status.",
        "enum": [
          "connected",
          "disconnected",
          "error"
        ],
        "title": "ConnectionStatus",
        "type": "string"
      },
      "CreateAnnotationRequest": {
        "description": "Annotation creation request.",
        "properties": {
          "chapter_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Index"
          },
          "chapter_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Title"
          },
          "end_position": {
            "title": "End Position",
            "type": "string"
          },
          "highlight_color": {
            "default": "#FFEB3B",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Highlight Color",
            "type": "string"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "page_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Number"
          },
          "selected_text": {
            "title": "Selected Text",
            "type": "string"
          },
          "start_position": {
            "description": "CFI or offset",
            "title": "Start Position",
            "type": "string"
          }
        },
        "required": [
          "selected_text",
          "start_position",
          "end_position"
        ],
        "title": "CreateAnnotationRequest",
        "type": "object"
      },
      "CreateBookmarkRequest": {
        "description": "Bookmark creation request.",
        "properties": {
          "chapter_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chapter Title"
          },
          "color": {
            "default": "#FF5722",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "type": "string"
          },
          "note": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "page_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Number"
          },
          "position": {
            "description": "CFI, page number, or offset",
            "title": "Position",
            "type": "string"
          }
        },
        "required": [
          "position"
        ],
        "title": "CreateBookmarkRequest",
        "type": "object"
      },
      "CreateGoalRequest": {
        "description": "Goal creation request.",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "end_date": {
            "format": "date",
            "title": "End Date",
            "type": "string"
          },
          "goal_type": {
            "$ref": "#/components/schemas/GoalType"
          },
          "start_date": {
            "format": "date",
            "title": "Start Date",
            "type": "string"
          },
          "target_value": {
            "minimum": 1.0,
            "title": "Target Value",
            "type": "integer"
          },
          "time_period": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "title": {
            "maxLength": 255,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "goal_type",
          "target_value",
          "time_period",
          "start_date",
          "end_date"
        ],
        "title": "CreateGoalRequest",
        "type": "object"
      },
      "CreateNoteRequest": {
        "description": "Note creation request.",
        "properties": {
          "content": {
            "title": "Content",
            "type": "string"
          },
          "is_pinned": {
            "default": false,
            "title": "Is Pinned",
            "type": "boolean"
          },
          "title": {
            "maxLength": 255,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "content"
        ],
        "title": "CreateNoteRequest",
        "type": "object"
      },
      "CreateReadingProfileRequest": {
        "description": "Reading profile creation request.",
        "properties": {
          "background_color": {
            "default": "#FFFFFF",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Background Color",
            "type": "string"
          },
          "column_count": {
            "default": 1,
            "title": "Column Count",
            "type": "integer"
          },
          "font_family": {
            "default": "Georgia",
            "title": "Font Family",
            "type": "string"
          },
          "font_size": {
            "default": 16,
            "title": "Font Size",
            "type": "integer"
          },
          "font_weight": {
            "default": 400,
            "title": "Font Weight",
            "type": "integer"
          },
          "hyphenation": {
            "default": true,
            "title": "Hyphenation",
            "type": "boolean"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "letter_spacing": {
            "default": 0,
            "title": "Letter Spacing",
            "type": "number"
          },
          "line_height": {
            "default": 1.5,
            "title": "Line Height",
            "type": "number"
          },
          "link_color": {
            "default": "#0066CC",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Link Color",
            "type": "string"
          },
          "margin_horizontal": {
            "default": 20,
            "title": "Margin Horizontal",
            "type": "integer"
          },
          "margin_vertical": {
            "default": 20,
            "title": "Margin Vertical",
            "type": "integer"
          },
          "name": {
            "maxLength": 100,
            "title": "Name",
            "type": "string"
          },
          "page_turn_animation": {
            "default": true,
            "title": "Page Turn Animation",
            "type": "boolean"
          },
          "paragraph_spacing": {
            "default": 1.0,
            "title": "Paragraph Spacing",
            "type": "number"
          },
          "reading_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingMode"
              },
              {
                "type": "null"
              }
            ]
          },
          "selection_color": {
            "default": "#B3D4FC",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Selection Color",
            "type": "string"
          },
          "text_align": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TextAlign"
              },
              {
                "type": "null"
              }
            ]
          },
          "text_color": {
            "default": "#000000",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Text Color",
            "type": "string"
          },
          "theme_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ThemeMode"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "name"
        ],
        "title": "CreateReadingProfileRequest",
        "type": "object"
      },
      "CreateReadingSessionRequest": {
        "description": "Reading session creation request.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "device_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Name"
          },
          "device_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Type"
          },
          "end_position": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Position"
          },
          "end_time": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time"
          },
          "pages_read": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pages Read"
          },
          "start_position": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Position"
          },
          "start_time": {
            "format": "date-time",
            "title": "Start Time",
            "type": "string"
          }
        },
        "required": [
          "book_id",
          "start_time"
        ],
        "title": "CreateReadingSessionRequest",
        "type": "object"
      },
      "CreateSavedFilterRequest": {
        "description": "Saved filter creation request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "filter_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FilterType"
              },
              {
                "type": "null"
              }
            ]
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_pinned": {
            "default": false,
            "title": "Is Pinned",
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "title": "Name",
            "type": "string"
          },
          "query": {
            "maxLength": 1000,
            "title": "Query",
            "type": "string"
          }
        },
        "required": [
          "name",
          "query"
        ],
        "title": "CreateSavedFilterRequest",
        "type": "object"
      },
      "CreateSeriesRequest": {
        "description": "Series creation request.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_complete": {
            "default": false,
            "title": "Is Complete",
            "type": "boolean"
          },
          "name": {
            "maxLength": 255,
            "title": "Name",
            "type": "string"
          },
          "total_books": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Books"
          }
        },
        "required": [
          "name"
        ],
        "title": "CreateSeriesRequest",
        "type": "object"
      },
      "CreateShelfRequest": {
        "description": "Shelf creation request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_smart": {
            "default": false,
            "title": "Is Smart",
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "title": "Name",
            "type": "string"
          },
          "parent_shelf_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Shelf Id"
          },
          "smart_query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Smart Query"
          },
          "sort_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          }
        },
        "required": [
          "name"
        ],
        "title": "CreateShelfRequest",
        "type": "object"
      },
      "CreateStorageBackendRequest": {
        "description": "Storage backend creation request.",
        "properties": {
          "backend_type": {
            "$ref": "#/components/schemas/StorageBackendType"
          },
          "base_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Path"
          },
          "connection_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type-specific connection settings",
            "title": "Connection Config"
          },
          "credentials": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "OAuth tokens or API keys",
            "title": "Credentials"
          },
          "is_primary": {
            "default": false,
            "title": "Is Primary",
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "backend_type",
          "name"
        ],
        "title": "CreateStorageBackendRequest",
        "type": "object"
      },
      "CreateTagRequest": {
        "description": "Tag creation request.",
        "properties": {
          "color": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "maxLength": 50,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "color"
        ],
        "title": "CreateTagRequest",
        "type": "object"
      },
      "DailyBreakdown": {
        "description": "Daily reading statistics.",
        "properties": {
          "date": {
            "format": "date",
            "title": "Date",
            "type": "string"
          },
          "pages_read": {
            "title": "Pages Read",
            "type": "integer"
          },
          "reading_time_minutes": {
            "title": "Reading Time Minutes",
            "type": "integer"
          },
          "sessions_count": {
            "title": "Sessions Count",
            "type": "integer"
          }
        },
        "required": [
          "date",
          "reading_time_minutes",
          "pages_read",
          "sessions_count"
        ],
        "title": "DailyBreakdown",
        "type": "object"
      },
      "DataSyncSettingsResponse": {
        "description": "Public sync settings used by clients for custom server discovery.",
        "properties": {
          "data_sync_url": {
            "title": "Data Sync Url",
            "type": "string"
          },
          "file_storage": {
            "$ref": "#/components/schemas/FileStorageSettings"
          }
        },
        "required": [
          "data_sync_url",
          "file_storage"
        ],
        "title": "DataSyncSettingsResponse",
        "type": "object"
      },
      "DeleteAccountRequest": {
        "description": "Account deletion request.",
        "properties": {
          "password": {
            "description": "Current password for confirmation",
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "DeleteAccountRequest",
        "type": "object"
      },
      "EndpointKind": {
        "enum": [
          "qbittorrent",
          "transmission",
          "deluge",
          "prowlarr",
          "torznab",
          "readarr",
          "sonarr",
          "radarr",
          "lidarr",
          "whisparr"
        ],
        "title": "EndpointKind",
        "type": "string"
      },
      "ExportAnnotationsRequest": {
        "description": "Request for exporting annotations.",
        "properties": {
          "book_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Ids"
          },
          "format": {
            "$ref": "#/components/schemas/ExportFormat",
            "default": "json"
          },
          "include_bookmarks": {
            "default": false,
            "title": "Include Bookmarks",
            "type": "boolean"
          },
          "include_notes": {
            "default": true,
            "title": "Include Notes",
            "type": "boolean"
          }
        },
        "title": "ExportAnnotationsRequest",
        "type": "object"
      },
      "ExportAnnotationsResponse": {
        "description": "Response containing exported annotations.",
        "properties": {
          "content": {
            "title": "Content",
            "type": "string"
          },
          "filename": {
            "title": "Filename",
            "type": "string"
          },
          "format": {
            "$ref": "#/components/schemas/ExportFormat"
          }
        },
        "required": [
          "format",
          "content",
          "filename"
        ],
        "title": "ExportAnnotationsResponse",
        "type": "object"
      },
      "ExportFormat": {
        "description": "Annotation export formats.",
        "enum": [
          "json",
          "markdown",
          "csv",
          "html"
        ],
        "title": "ExportFormat",
        "type": "string"
      },
      "FileFormat": {
        "description": "Supported ebook file formats.",
        "enum": [
          "epub",
          "pdf",
          "mobi",
          "azw3",
          "txt",
          "cbr",
          "cbz"
        ],
        "title": "FileFormat",
        "type": "string"
      },
      "FileInfo": {
        "description": "File information response schema.",
        "properties": {
          "file_format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Format"
          },
          "file_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "SHA-256 checksum",
            "title": "File Hash"
          },
          "file_path": {
            "description": "Relative path in storage",
            "title": "File Path",
            "type": "string"
          },
          "file_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size"
          },
          "storage_backend_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Backend Id"
          },
          "uploaded_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uploaded At"
          }
        },
        "required": [
          "file_path"
        ],
        "title": "FileInfo",
        "type": "object"
      },
      "FileStorageSettings": {
        "description": "Public file storage capability advertised by this server.",
        "properties": {
          "quota_bytes": {
            "title": "Quota Bytes",
            "type": "integer"
          },
          "supported": {
            "title": "Supported",
            "type": "boolean"
          }
        },
        "required": [
          "supported",
          "quota_bytes"
        ],
        "title": "FileStorageSettings",
        "type": "object"
      },
      "FilterType": {
        "description": "Filter type options.",
        "enum": [
          "search",
          "shelf",
          "custom"
        ],
        "title": "FilterType",
        "type": "string"
      },
      "ForgotPasswordRequest": {
        "description": "Password recovery request.",
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "title": "ForgotPasswordRequest",
        "type": "object"
      },
      "Goal": {
        "description": "Goal response schema.",
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "current_value": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Value"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "end_date": {
            "format": "date",
            "title": "End Date",
            "type": "string"
          },
          "goal_id": {
            "format": "uuid",
            "title": "Goal Id",
            "type": "string"
          },
          "goal_type": {
            "$ref": "#/components/schemas/GoalType"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "is_completed": {
            "default": false,
            "title": "Is Completed",
            "type": "boolean"
          },
          "progress_percentage": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Progress Percentage"
          },
          "start_date": {
            "format": "date",
            "title": "Start Date",
            "type": "string"
          },
          "target_value": {
            "title": "Target Value",
            "type": "integer"
          },
          "time_period": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "goal_id",
          "title",
          "goal_type",
          "target_value",
          "time_period",
          "start_date",
          "end_date"
        ],
        "title": "Goal",
        "type": "object"
      },
      "GoalList": {
        "description": "Goal list response.",
        "properties": {
          "goals": {
            "items": {
              "$ref": "#/components/schemas/Goal"
            },
            "title": "Goals",
            "type": "array"
          }
        },
        "required": [
          "goals"
        ],
        "title": "GoalList",
        "type": "object"
      },
      "GoalType": {
        "description": "Type of reading goal.",
        "enum": [
          "books_count",
          "pages_count",
          "reading_time"
        ],
        "title": "GoalType",
        "type": "string"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "LoginRequest": {
        "description": "User login request.",
        "properties": {
          "client_type": {
            "default": "unknown",
            "enum": [
              "mobile",
              "desktop",
              "web",
              "unknown"
            ],
            "title": "Client Type",
            "type": "string"
          },
          "device_label": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Label"
          },
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "title": "LoginRequest",
        "type": "object"
      },
      "LogoutRequest": {
        "description": "Logout request.",
        "properties": {
          "all_devices": {
            "default": false,
            "description": "Logout from all devices",
            "title": "All Devices",
            "type": "boolean"
          }
        },
        "title": "LogoutRequest",
        "type": "object"
      },
      "MediaAssetResponse": {
        "description": "Uploaded media asset metadata.",
        "properties": {
          "asset_id": {
            "format": "uuid",
            "title": "Asset Id",
            "type": "string"
          },
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "content_type": {
            "title": "Content Type",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "extension": {
            "title": "Extension",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "original_filename": {
            "title": "Original Filename",
            "type": "string"
          },
          "owner_user_id": {
            "format": "uuid",
            "title": "Owner User Id",
            "type": "string"
          },
          "sha256": {
            "title": "Sha256",
            "type": "string"
          },
          "size_bytes": {
            "title": "Size Bytes",
            "type": "integer"
          },
          "storage_path": {
            "title": "Storage Path",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "asset_id",
          "owner_user_id",
          "book_id",
          "kind",
          "original_filename",
          "content_type",
          "extension",
          "size_bytes",
          "sha256",
          "storage_path"
        ],
        "title": "MediaAssetResponse",
        "type": "object"
      },
      "MediaUsageResponse": {
        "description": "User media storage quota usage.",
        "properties": {
          "available_bytes": {
            "title": "Available Bytes",
            "type": "integer"
          },
          "quota_bytes": {
            "title": "Quota Bytes",
            "type": "integer"
          },
          "used_bytes": {
            "title": "Used Bytes",
            "type": "integer"
          }
        },
        "required": [
          "used_bytes",
          "quota_bytes",
          "available_bytes"
        ],
        "title": "MediaUsageResponse",
        "type": "object"
      },
      "MessageResponse": {
        "description": "Simple message response.",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "title": "MessageResponse",
        "type": "object"
      },
      "MetadataFetchRequest": {
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "isbn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "MetadataFetchRequest",
        "type": "object"
      },
      "MetadataFetchResponse": {
        "properties": {
          "results": {
            "items": {
              "$ref": "#/components/schemas/MetadataSearchResult"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "results"
        ],
        "title": "MetadataFetchResponse",
        "type": "object"
      },
      "MetadataSearchResult": {
        "description": "Book metadata search result from external sources.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "isbn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn"
          },
          "isbn13": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isbn13"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Count"
          },
          "publication_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publication Date"
          },
          "publisher": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publisher"
          },
          "source": {
            "examples": [
              "open_library",
              "google_books"
            ],
            "title": "Source",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "source",
          "title"
        ],
        "title": "MetadataSearchResult",
        "type": "object"
      },
      "Note": {
        "description": "Note response schema.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "book_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Title"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "is_pinned": {
            "default": false,
            "title": "Is Pinned",
            "type": "boolean"
          },
          "note_id": {
            "format": "uuid",
            "title": "Note Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "note_id",
          "book_id",
          "title",
          "content"
        ],
        "title": "Note",
        "type": "object"
      },
      "NoteList": {
        "description": "Paginated note list response.",
        "properties": {
          "notes": {
            "items": {
              "$ref": "#/components/schemas/Note"
            },
            "title": "Notes",
            "type": "array"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "notes",
          "pagination"
        ],
        "title": "NoteList",
        "type": "object"
      },
      "OAuthExchangeRequest": {
        "description": "Exchange a one-time code for Papyrus tokens.",
        "properties": {
          "client_type": {
            "default": "unknown",
            "enum": [
              "mobile",
              "desktop",
              "web",
              "unknown"
            ],
            "title": "Client Type",
            "type": "string"
          },
          "code": {
            "description": "One-time exchange code returned from the browser callback",
            "title": "Code",
            "type": "string"
          },
          "device_label": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Label"
          }
        },
        "required": [
          "code"
        ],
        "title": "OAuthExchangeRequest",
        "type": "object"
      },
      "OAuthLinkCompleteRequest": {
        "description": "Consume a one-time exchange code to link a provider.",
        "properties": {
          "code": {
            "description": "One-time exchange code returned from the browser callback",
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "OAuthLinkCompleteRequest",
        "type": "object"
      },
      "OAuthStartRequest": {
        "description": "OAuth flow bootstrap request.",
        "properties": {
          "redirect_uri": {
            "description": "App callback URI for the browser flow",
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "redirect_uri"
        ],
        "title": "OAuthStartRequest",
        "type": "object"
      },
      "OpdsCredentials": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "format": "password",
            "maxLength": 4096,
            "title": "Password",
            "type": "string",
            "writeOnly": true
          },
          "username": {
            "maxLength": 1024,
            "pattern": "^[^:\\r\\n]*$",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "title": "OpdsCredentials",
        "type": "object"
      },
      "OpdsRelayRequest": {
        "additionalProperties": false,
        "properties": {
          "catalog_url": {
            "maxLength": 8192,
            "minLength": 1,
            "title": "Catalog Url",
            "type": "string"
          },
          "credentials": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OpdsCredentials"
              },
              {
                "type": "null"
              }
            ]
          },
          "max_bytes": {
            "default": 8388608,
            "maximum": 268435456.0,
            "minimum": 1.0,
            "title": "Max Bytes",
            "type": "integer"
          },
          "url": {
            "maxLength": 8192,
            "minLength": 1,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url",
          "catalog_url"
        ],
        "title": "OpdsRelayRequest",
        "type": "object"
      },
      "Pagination": {
        "description": "Pagination metadata.",
        "properties": {
          "has_next": {
            "examples": [
              true
            ],
            "title": "Has Next",
            "type": "boolean"
          },
          "has_prev": {
            "examples": [
              false
            ],
            "title": "Has Prev",
            "type": "boolean"
          },
          "limit": {
            "examples": [
              20
            ],
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Limit",
            "type": "integer"
          },
          "page": {
            "examples": [
              1
            ],
            "minimum": 1.0,
            "title": "Page",
            "type": "integer"
          },
          "total": {
            "examples": [
              150
            ],
            "minimum": 0.0,
            "title": "Total",
            "type": "integer"
          },
          "total_pages": {
            "examples": [
              8
            ],
            "minimum": 0.0,
            "title": "Total Pages",
            "type": "integer"
          }
        },
        "required": [
          "page",
          "limit",
          "total",
          "total_pages",
          "has_next",
          "has_prev"
        ],
        "title": "Pagination",
        "type": "object"
      },
      "PowerSyncCrudMutation": {
        "description": "One owned library mutation uploaded from the PowerSync queue.",
        "properties": {
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "op": {
            "enum": [
              "PUT",
              "PATCH",
              "DELETE",
              "put",
              "patch",
              "delete"
            ],
            "title": "Op",
            "type": "string"
          },
          "op_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Op Id"
          },
          "tx_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tx Id"
          },
          "type": {
            "enum": [
              "books",
              "shelves",
              "tags",
              "notes",
              "annotations",
              "bookmarks",
              "book_shelves",
              "book_tags"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "op",
          "id"
        ],
        "title": "PowerSyncCrudMutation",
        "type": "object"
      },
      "PowerSyncTokenResponse": {
        "description": "Short-lived PowerSync token response.",
        "properties": {
          "expires_in": {
            "title": "Expires In",
            "type": "integer"
          },
          "token": {
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token",
          "expires_in"
        ],
        "title": "PowerSyncTokenResponse",
        "type": "object"
      },
      "PowerSyncUploadRequest": {
        "description": "One PowerSync CRUD transaction.",
        "properties": {
          "batch": {
            "items": {
              "$ref": "#/components/schemas/PowerSyncCrudMutation"
            },
            "title": "Batch",
            "type": "array"
          }
        },
        "required": [
          "batch"
        ],
        "title": "PowerSyncUploadRequest",
        "type": "object"
      },
      "PowerSyncUploadResponse": {
        "description": "Summary of an applied PowerSync upload transaction.",
        "properties": {
          "applied_count": {
            "title": "Applied Count",
            "type": "integer"
          }
        },
        "required": [
          "applied_count"
        ],
        "title": "PowerSyncUploadResponse",
        "type": "object"
      },
      "ReadingMode": {
        "description": "Reading display modes.",
        "enum": [
          "paginated",
          "continuous"
        ],
        "title": "ReadingMode",
        "type": "string"
      },
      "ReadingProfile": {
        "description": "Reading profile response schema.",
        "properties": {
          "background_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Background Color"
          },
          "column_count": {
            "anyOf": [
              {
                "maximum": 3.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Column Count"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "font_family": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Family"
          },
          "font_size": {
            "anyOf": [
              {
                "maximum": 72.0,
                "minimum": 8.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Size"
          },
          "font_weight": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Weight"
          },
          "hyphenation": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hyphenation"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "letter_spacing": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Letter Spacing"
          },
          "line_height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Line Height"
          },
          "link_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Link Color"
          },
          "margin_horizontal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Margin Horizontal"
          },
          "margin_vertical": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Margin Vertical"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "page_turn_animation": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Turn Animation"
          },
          "paragraph_spacing": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paragraph Spacing"
          },
          "profile_id": {
            "format": "uuid",
            "title": "Profile Id",
            "type": "string"
          },
          "reading_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingMode"
              },
              {
                "type": "null"
              }
            ]
          },
          "selection_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Selection Color"
          },
          "text_align": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TextAlign"
              },
              {
                "type": "null"
              }
            ]
          },
          "text_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text Color"
          },
          "theme_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ThemeMode"
              },
              {
                "type": "null"
              }
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "profile_id",
          "name"
        ],
        "title": "ReadingProfile",
        "type": "object"
      },
      "ReadingProfileList": {
        "description": "Reading profile list response.",
        "properties": {
          "profiles": {
            "items": {
              "$ref": "#/components/schemas/ReadingProfile"
            },
            "title": "Profiles",
            "type": "array"
          }
        },
        "required": [
          "profiles"
        ],
        "title": "ReadingProfileList",
        "type": "object"
      },
      "ReadingProgress": {
        "description": "Reading progress information.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "current_cfi": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Cfi"
          },
          "current_page": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Page"
          },
          "current_position": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Position"
          },
          "last_read_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Read At"
          },
          "reading_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "sessions_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sessions Count"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "total_reading_time_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Reading Time Minutes"
          }
        },
        "required": [
          "book_id"
        ],
        "title": "ReadingProgress",
        "type": "object"
      },
      "ReadingSession": {
        "description": "Reading session response schema.",
        "properties": {
          "book_id": {
            "format": "uuid",
            "title": "Book Id",
            "type": "string"
          },
          "book_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Title"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "device_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Name"
          },
          "device_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Type"
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Calculated from start_time and end_time",
            "title": "Duration Minutes"
          },
          "end_position": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Position"
          },
          "end_time": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time"
          },
          "pages_read": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pages Read"
          },
          "session_id": {
            "format": "uuid",
            "title": "Session Id",
            "type": "string"
          },
          "start_position": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Position"
          },
          "start_time": {
            "format": "date-time",
            "title": "Start Time",
            "type": "string"
          }
        },
        "required": [
          "session_id",
          "book_id",
          "start_time"
        ],
        "title": "ReadingSession",
        "type": "object"
      },
      "ReadingSessionList": {
        "description": "Paginated reading session list response.",
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          },
          "sessions": {
            "items": {
              "$ref": "#/components/schemas/ReadingSession"
            },
            "title": "Sessions",
            "type": "array"
          }
        },
        "required": [
          "sessions",
          "pagination"
        ],
        "title": "ReadingSessionList",
        "type": "object"
      },
      "ReadingStatistics": {
        "description": "Comprehensive reading statistics response.",
        "properties": {
          "books_breakdown": {
            "items": {
              "$ref": "#/components/schemas/BookBreakdown"
            },
            "title": "Books Breakdown",
            "type": "array"
          },
          "daily_breakdown": {
            "items": {
              "$ref": "#/components/schemas/DailyBreakdown"
            },
            "title": "Daily Breakdown",
            "type": "array"
          },
          "period": {
            "$ref": "#/components/schemas/StatisticsPeriod"
          },
          "totals": {
            "$ref": "#/components/schemas/StatisticsTotals"
          }
        },
        "required": [
          "period",
          "totals",
          "daily_breakdown",
          "books_breakdown"
        ],
        "title": "ReadingStatistics",
        "type": "object"
      },
      "ReadingStatus": {
        "description": "Book reading status.",
        "enum": [
          "not_started",
          "in_progress",
          "completed",
          "paused",
          "abandoned"
        ],
        "title": "ReadingStatus",
        "type": "string"
      },
      "RefreshTokenRequest": {
        "description": "Token refresh request.",
        "properties": {
          "refresh_token": {
            "description": "Refresh token from login",
            "title": "Refresh Token",
            "type": "string"
          }
        },
        "required": [
          "refresh_token"
        ],
        "title": "RefreshTokenRequest",
        "type": "object"
      },
      "RegisterRequest": {
        "description": "User registration request.",
        "properties": {
          "client_type": {
            "default": "unknown",
            "enum": [
              "mobile",
              "desktop",
              "web",
              "unknown"
            ],
            "title": "Client Type",
            "type": "string"
          },
          "device_label": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Label"
          },
          "display_name": {
            "examples": [
              "John Doe"
            ],
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "email": {
            "examples": [
              "user@example.com"
            ],
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "password": {
            "examples": [
              "SecureP@ss123"
            ],
            "minLength": 8,
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "password",
          "display_name"
        ],
        "title": "RegisterRequest",
        "type": "object"
      },
      "Release": {
        "properties": {
          "format_hints": {
            "items": {
              "type": "string"
            },
            "title": "Format Hints",
            "type": "array"
          },
          "indexer": {
            "title": "Indexer",
            "type": "string"
          },
          "protocol": {
            "title": "Protocol",
            "type": "string"
          },
          "publish_date": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publish Date"
          },
          "release_token": {
            "title": "Release Token",
            "type": "string"
          },
          "seeders": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seeders"
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Bytes"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "release_token",
          "protocol",
          "indexer"
        ],
        "title": "Release",
        "type": "object"
      },
      "RemoveBooksRequest": {
        "description": "Request to remove books from a shelf.",
        "properties": {
          "book_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Book Ids",
            "type": "array"
          }
        },
        "required": [
          "book_ids"
        ],
        "title": "RemoveBooksRequest",
        "type": "object"
      },
      "RemoveBooksResponse": {
        "description": "Response for removing books from a shelf.",
        "properties": {
          "removed_count": {
            "title": "Removed Count",
            "type": "integer"
          }
        },
        "required": [
          "removed_count"
        ],
        "title": "RemoveBooksResponse",
        "type": "object"
      },
      "ResendVerificationRequest": {
        "description": "Resend verification email request.",
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "title": "ResendVerificationRequest",
        "type": "object"
      },
      "ResetPasswordRequest": {
        "description": "Password reset request.",
        "properties": {
          "password": {
            "description": "New password",
            "minLength": 8,
            "title": "Password",
            "type": "string"
          },
          "token": {
            "description": "Password reset token",
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token",
          "password"
        ],
        "title": "ResetPasswordRequest",
        "type": "object"
      },
      "SavedFilter": {
        "description": "Saved filter response schema.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "filter_id": {
            "format": "uuid",
            "title": "Filter Id",
            "type": "string"
          },
          "filter_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FilterType"
              },
              {
                "type": "null"
              }
            ]
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_pinned": {
            "default": false,
            "title": "Is Pinned",
            "type": "boolean"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "usage_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Count"
          }
        },
        "required": [
          "filter_id",
          "name",
          "query"
        ],
        "title": "SavedFilter",
        "type": "object"
      },
      "SavedFilterList": {
        "description": "Saved filter list response.",
        "properties": {
          "filters": {
            "items": {
              "$ref": "#/components/schemas/SavedFilter"
            },
            "title": "Filters",
            "type": "array"
          }
        },
        "required": [
          "filters"
        ],
        "title": "SavedFilterList",
        "type": "object"
      },
      "SearchRequest": {
        "properties": {
          "endpoint_ids": {
            "anyOf": [
              {
                "items": {
                  "format": "uuid",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint Ids"
          },
          "query": {
            "maxLength": 500,
            "minLength": 1,
            "title": "Query",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "title": "SearchRequest",
        "type": "object"
      },
      "Series": {
        "description": "Series response schema.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "book_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Count"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_complete": {
            "default": false,
            "title": "Is Complete",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "series_id": {
            "format": "uuid",
            "title": "Series Id",
            "type": "string"
          },
          "total_books": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Books"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "series_id",
          "name"
        ],
        "title": "Series",
        "type": "object"
      },
      "SeriesList": {
        "description": "Series list response.",
        "properties": {
          "series": {
            "items": {
              "$ref": "#/components/schemas/Series"
            },
            "title": "Series",
            "type": "array"
          }
        },
        "required": [
          "series"
        ],
        "title": "SeriesList",
        "type": "object"
      },
      "SeriesWithBooks": {
        "description": "Series with included books.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "book_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Count"
          },
          "books": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BookSummary"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Books"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_complete": {
            "default": false,
            "title": "Is Complete",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "series_id": {
            "format": "uuid",
            "title": "Series Id",
            "type": "string"
          },
          "total_books": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Books"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "series_id",
          "name"
        ],
        "title": "SeriesWithBooks",
        "type": "object"
      },
      "SetPrimaryRequest": {
        "description": "Request to set a storage backend as primary.",
        "properties": {
          "backend_id": {
            "format": "uuid",
            "title": "Backend Id",
            "type": "string"
          }
        },
        "required": [
          "backend_id"
        ],
        "title": "SetPrimaryRequest",
        "type": "object"
      },
      "Shelf": {
        "description": "Full shelf response schema.",
        "properties": {
          "book_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Book Count"
          },
          "children": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Shelf"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Children"
          },
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "is_smart": {
            "default": false,
            "title": "Is Smart",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "parent_shelf_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Shelf Id"
          },
          "shelf_id": {
            "format": "uuid",
            "title": "Shelf Id",
            "type": "string"
          },
          "smart_query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Smart Query"
          },
          "sort_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "shelf_id",
          "name"
        ],
        "title": "Shelf",
        "type": "object"
      },
      "ShelfIdsRequest": {
        "properties": {
          "shelf_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Shelf Ids",
            "type": "array"
          }
        },
        "required": [
          "shelf_ids"
        ],
        "title": "ShelfIdsRequest",
        "type": "object"
      },
      "ShelfList": {
        "description": "Shelf list response.",
        "properties": {
          "shelves": {
            "items": {
              "$ref": "#/components/schemas/Shelf"
            },
            "title": "Shelves",
            "type": "array"
          }
        },
        "required": [
          "shelves"
        ],
        "title": "ShelfList",
        "type": "object"
      },
      "ShelfSummary": {
        "description": "Minimal shelf information.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "shelf_id": {
            "format": "uuid",
            "title": "Shelf Id",
            "type": "string"
          }
        },
        "required": [
          "shelf_id",
          "name"
        ],
        "title": "ShelfSummary",
        "type": "object"
      },
      "ShelvesResponse": {
        "properties": {
          "shelves": {
            "items": {
              "$ref": "#/components/schemas/Shelf"
            },
            "title": "Shelves",
            "type": "array"
          }
        },
        "required": [
          "shelves"
        ],
        "title": "ShelvesResponse",
        "type": "object"
      },
      "StatisticsPeriod": {
        "description": "Statistics period.",
        "properties": {
          "end_date": {
            "format": "date",
            "title": "End Date",
            "type": "string"
          },
          "start_date": {
            "format": "date",
            "title": "Start Date",
            "type": "string"
          }
        },
        "required": [
          "start_date",
          "end_date"
        ],
        "title": "StatisticsPeriod",
        "type": "object"
      },
      "StatisticsTotals": {
        "description": "Total reading statistics.",
        "properties": {
          "average_session_minutes": {
            "title": "Average Session Minutes",
            "type": "number"
          },
          "books_completed": {
            "title": "Books Completed",
            "type": "integer"
          },
          "current_streak": {
            "title": "Current Streak",
            "type": "integer"
          },
          "longest_streak": {
            "title": "Longest Streak",
            "type": "integer"
          },
          "pages_read": {
            "title": "Pages Read",
            "type": "integer"
          },
          "reading_days": {
            "title": "Reading Days",
            "type": "integer"
          },
          "reading_time_minutes": {
            "title": "Reading Time Minutes",
            "type": "integer"
          },
          "sessions_count": {
            "title": "Sessions Count",
            "type": "integer"
          }
        },
        "required": [
          "reading_time_minutes",
          "pages_read",
          "books_completed",
          "sessions_count",
          "average_session_minutes",
          "reading_days",
          "current_streak",
          "longest_streak"
        ],
        "title": "StatisticsTotals",
        "type": "object"
      },
      "StorageBackend": {
        "description": "Storage backend response schema.",
        "properties": {
          "backend_id": {
            "format": "uuid",
            "title": "Backend Id",
            "type": "string"
          },
          "backend_type": {
            "$ref": "#/components/schemas/StorageBackendType"
          },
          "base_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Path"
          },
          "connection_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConnectionStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "is_primary": {
            "default": false,
            "title": "Is Primary",
            "type": "boolean"
          },
          "last_accessed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Accessed At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "storage_quota_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Quota Bytes"
          },
          "storage_used_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Used Bytes"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "backend_id",
          "backend_type",
          "name"
        ],
        "title": "StorageBackend",
        "type": "object"
      },
      "StorageBackendList": {
        "description": "Storage backend list response.",
        "properties": {
          "backends": {
            "items": {
              "$ref": "#/components/schemas/StorageBackend"
            },
            "title": "Backends",
            "type": "array"
          }
        },
        "required": [
          "backends"
        ],
        "title": "StorageBackendList",
        "type": "object"
      },
      "StorageBackendType": {
        "description": "Supported storage backend types.",
        "enum": [
          "local",
          "google_drive",
          "onedrive",
          "dropbox",
          "webdav",
          "minio",
          "s3",
          "papyrus_server"
        ],
        "title": "StorageBackendType",
        "type": "string"
      },
      "SubmitRequest": {
        "properties": {
          "endpoint_id": {
            "format": "uuid",
            "title": "Endpoint Id",
            "type": "string"
          },
          "release_token": {
            "minLength": 1,
            "title": "Release Token",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id",
          "release_token"
        ],
        "title": "SubmitRequest",
        "type": "object"
      },
      "Tag": {
        "description": "Tag response schema.",
        "properties": {
          "color": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "tag_id": {
            "format": "uuid",
            "title": "Tag Id",
            "type": "string"
          },
          "usage_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Count"
          }
        },
        "required": [
          "tag_id",
          "name",
          "color"
        ],
        "title": "Tag",
        "type": "object"
      },
      "TagIdsRequest": {
        "properties": {
          "tag_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Tag Ids",
            "type": "array"
          }
        },
        "required": [
          "tag_ids"
        ],
        "title": "TagIdsRequest",
        "type": "object"
      },
      "TagList": {
        "description": "Tag list response.",
        "properties": {
          "tags": {
            "items": {
              "$ref": "#/components/schemas/Tag"
            },
            "title": "Tags",
            "type": "array"
          }
        },
        "required": [
          "tags"
        ],
        "title": "TagList",
        "type": "object"
      },
      "TagsResponse": {
        "properties": {
          "tags": {
            "items": {
              "$ref": "#/components/schemas/Tag"
            },
            "title": "Tags",
            "type": "array"
          }
        },
        "required": [
          "tags"
        ],
        "title": "TagsResponse",
        "type": "object"
      },
      "TextAlign": {
        "description": "Text alignment options.",
        "enum": [
          "left",
          "right",
          "center",
          "justify"
        ],
        "title": "TextAlign",
        "type": "string"
      },
      "ThemeMode": {
        "description": "Reader theme modes.",
        "enum": [
          "light",
          "dark",
          "sepia",
          "custom"
        ],
        "title": "ThemeMode",
        "type": "string"
      },
      "TimePeriod": {
        "description": "Goal time period.",
        "enum": [
          "daily",
          "weekly",
          "monthly",
          "yearly",
          "custom"
        ],
        "title": "TimePeriod",
        "type": "string"
      },
      "UpdateAnnotationRequest": {
        "description": "Annotation update request.",
        "properties": {
          "highlight_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlight Color"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "title": "UpdateAnnotationRequest",
        "type": "object"
      },
      "UpdateBookmarkRequest": {
        "description": "Bookmark update request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "note": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "title": "UpdateBookmarkRequest",
        "type": "object"
      },
      "UpdateGoalRequest": {
        "description": "Goal update request.",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "end_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "target_value": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Value"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "UpdateGoalRequest",
        "type": "object"
      },
      "UpdateNoteRequest": {
        "description": "Note update request.",
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "UpdateNoteRequest",
        "type": "object"
      },
      "UpdateProgressRequest": {
        "description": "Update reading progress request.",
        "properties": {
          "current_cfi": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Cfi"
          },
          "current_page": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Page"
          },
          "current_position": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Position"
          },
          "reading_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "UpdateProgressRequest",
        "type": "object"
      },
      "UpdateReadingProfileRequest": {
        "description": "Reading profile update request.",
        "properties": {
          "background_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Background Color"
          },
          "column_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Column Count"
          },
          "font_family": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Family"
          },
          "font_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Size"
          },
          "font_weight": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Weight"
          },
          "hyphenation": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hyphenation"
          },
          "letter_spacing": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Letter Spacing"
          },
          "line_height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Line Height"
          },
          "link_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Link Color"
          },
          "margin_horizontal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Margin Horizontal"
          },
          "margin_vertical": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Margin Vertical"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "page_turn_animation": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Page Turn Animation"
          },
          "paragraph_spacing": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paragraph Spacing"
          },
          "reading_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReadingMode"
              },
              {
                "type": "null"
              }
            ]
          },
          "selection_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Selection Color"
          },
          "text_align": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TextAlign"
              },
              {
                "type": "null"
              }
            ]
          },
          "text_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text Color"
          },
          "theme_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ThemeMode"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "UpdateReadingProfileRequest",
        "type": "object"
      },
      "UpdateSavedFilterRequest": {
        "description": "Saved filter update request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "filter_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FilterType"
              },
              {
                "type": "null"
              }
            ]
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "query": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Query"
          }
        },
        "title": "UpdateSavedFilterRequest",
        "type": "object"
      },
      "UpdateSeriesRequest": {
        "description": "Series update request.",
        "properties": {
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_complete": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Complete"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "total_books": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Books"
          }
        },
        "title": "UpdateSeriesRequest",
        "type": "object"
      },
      "UpdateShelfRequest": {
        "description": "Shelf update request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_smart": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Smart"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "parent_shelf_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Shelf Id"
          },
          "smart_query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Smart Query"
          },
          "sort_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          }
        },
        "title": "UpdateShelfRequest",
        "type": "object"
      },
      "UpdateStorageBackendRequest": {
        "description": "Storage backend update request.",
        "properties": {
          "base_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Path"
          },
          "connection_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connection Config"
          },
          "credentials": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Credentials"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "title": "UpdateStorageBackendRequest",
        "type": "object"
      },
      "UpdateTagRequest": {
        "description": "Tag update request.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 50,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "title": "UpdateTagRequest",
        "type": "object"
      },
      "UpdateUserRequest": {
        "description": "User profile update request.",
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          }
        },
        "title": "UpdateUserRequest",
        "type": "object"
      },
      "User": {
        "description": "User response schema.",
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "format": "uri",
                "maxLength": 2083,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "email": {
            "anyOf": [
              {
                "format": "email",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "email_verified": {
            "default": false,
            "title": "Email Verified",
            "type": "boolean"
          },
          "last_login_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Login At"
          },
          "user_id": {
            "format": "uuid",
            "title": "User Id",
            "type": "string"
          }
        },
        "required": [
          "user_id",
          "display_name",
          "created_at"
        ],
        "title": "User",
        "type": "object"
      },
      "UserPreferences": {
        "additionalProperties": true,
        "description": "User preferences (flexible structure).",
        "properties": {
          "default_shelf": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "Currently Reading"
            ],
            "title": "Default Shelf"
          },
          "notifications_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              true
            ],
            "title": "Notifications Enabled"
          },
          "sync_wifi_only": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              false
            ],
            "title": "Sync Wifi Only"
          },
          "theme": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "dark"
            ],
            "title": "Theme"
          }
        },
        "title": "UserPreferences",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "VerifyEmailRequest": {
        "description": "Email verification request.",
        "properties": {
          "token": {
            "description": "Email verification token",
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "VerifyEmailRequest",
        "type": "object"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "name": "Papyrus Support",
      "url": "https://github.com/PapyrusReader/papyrus"
    },
    "description": "\nREST API for Papyrus - a cross-platform book management application.\n\n## Overview\n\nThe Papyrus Server handles metadata storage and synchronization for the Papyrus\ne-book reader application. It provides endpoints for:\n\n- **Authentication**: User registration, login, OAuth, and session management\n- **Books**: CRUD operations for book metadata and file references\n- **Organization**: Shelves, tags, and series management\n- **Annotations**: Highlights, notes, and bookmarks\n- **Progress**: Reading sessions and statistics\n- **Goals**: Reading goal tracking\n- **Sync**: Cross-device synchronization\n- **Storage**: File storage backend configuration\n- **Files**: File upload/download (when server is file backend)\n\n## Authentication\n\nMost endpoints require authentication via JWT Bearer token. Obtain tokens\nthrough the `/v1/auth/register`, `/v1/auth/login`, or the\nbrowser-based `/v1/auth/oauth/google/start` flow.\n\n```\nAuthorization: Bearer <access_token>\n```\n\nAccess tokens expire after `60` minutes.\nUse the refresh token to obtain new access tokens via `/v1/auth/refresh`.\n\n## Rate Limiting\n\nRate limits are enforced per user:\n\n| Endpoint Category | Limit |\n|-------------------|-------|\n| Authentication | 5 requests/minute |\n| General API | 100 requests/minute |\n| File uploads | 10 requests/minute |\n| Batch operations | 20 requests/minute |\n",
    "license": {
      "name": "AGPL-3.0",
      "url": "https://www.gnu.org/licenses/agpl-3.0.html"
    },
    "title": "Papyrus Server API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/": {
      "get": {
        "description": "Return the available page-style endpoints for this server.",
        "operationId": "index__get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Index  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Index",
        "tags": [
          "Index"
        ]
      }
    },
    "/health": {
      "get": {
        "description": "Check API health status.",
        "operationId": "health_check_health_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Health Check Health Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Health Check",
        "tags": [
          "Health"
        ]
      }
    },
    "/v1/acquisition/arr/{endpoint_id}/commands": {
      "post": {
        "description": "Delegate a managed search/acquisition to Readarr or another Arr app.",
        "operationId": "run_arr_command_v1_acquisition_arr__endpoint_id__commands_post",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArrCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Run Arr Command",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/capabilities": {
      "get": {
        "operationId": "acquisition_capabilities_v1_acquisition_capabilities_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionCapabilities"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Acquisition Capabilities",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/endpoints": {
      "get": {
        "operationId": "list_endpoints_v1_acquisition_endpoints_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AcquisitionEndpoint"
                  },
                  "title": "Response List Endpoints V1 Acquisition Endpoints Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Endpoints",
        "tags": [
          "Acquisition"
        ]
      },
      "post": {
        "operationId": "create_endpoint_v1_acquisition_endpoints_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcquisitionEndpointCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionEndpoint"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Endpoint",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/endpoints/test": {
      "post": {
        "operationId": "test_connection_v1_acquisition_endpoints_test_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcquisitionEndpointTest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionEndpointTestResult"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Test Connection",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/endpoints/{endpoint_id}": {
      "delete": {
        "operationId": "delete_endpoint_v1_acquisition_endpoints__endpoint_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Endpoint",
        "tags": [
          "Acquisition"
        ]
      },
      "patch": {
        "operationId": "update_endpoint_v1_acquisition_endpoints__endpoint_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcquisitionEndpointUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionEndpoint"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Endpoint",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs": {
      "get": {
        "operationId": "list_jobs_v1_acquisition_jobs_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJobPage"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Jobs",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs/{job_id}": {
      "delete": {
        "operationId": "delete_acquisition_job_v1_acquisition_jobs__job_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Acquisition Job",
        "tags": [
          "Acquisition"
        ]
      },
      "get": {
        "operationId": "get_job_v1_acquisition_jobs__job_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Job",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs/{job_id}/cancel": {
      "post": {
        "operationId": "cancel_acquisition_job_v1_acquisition_jobs__job_id__cancel_post",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Cancel Acquisition Job",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs/{job_id}/file-selection": {
      "post": {
        "operationId": "choose_job_file_v1_acquisition_jobs__job_id__file_selection_post",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcquisitionFileSelectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Choose Job File",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs/{job_id}/files": {
      "get": {
        "operationId": "get_job_files_v1_acquisition_jobs__job_id__files_get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AcquisitionFileCandidate"
                  },
                  "title": "Response Get Job Files V1 Acquisition Jobs  Job Id  Files Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Job Files",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/jobs/{job_id}/retry-import": {
      "post": {
        "operationId": "retry_acquisition_job_import_v1_acquisition_jobs__job_id__retry_import_post",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retry Acquisition Job Import",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/rules": {
      "get": {
        "operationId": "list_rules_v1_acquisition_rules_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AcquisitionRule"
                  },
                  "title": "Response List Rules V1 Acquisition Rules Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Rules",
        "tags": [
          "Acquisition"
        ]
      },
      "post": {
        "operationId": "create_rule_v1_acquisition_rules_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcquisitionRuleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionRule"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Rule",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/rules/{rule_id}/run": {
      "post": {
        "operationId": "run_acquisition_rule_v1_acquisition_rules__rule_id__run_post",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AcquisitionJob"
                  },
                  "title": "Response Run Acquisition Rule V1 Acquisition Rules  Rule Id  Run Post",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Run Acquisition Rule",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/search": {
      "post": {
        "operationId": "search_releases_v1_acquisition_search_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Release"
                  },
                  "title": "Response Search Releases V1 Acquisition Search Post",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Search Releases",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/submissions": {
      "post": {
        "operationId": "submit_release_v1_acquisition_submissions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcquisitionJob"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Submit Release",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/acquisition/submissions/batch": {
      "post": {
        "operationId": "submit_release_batch_route_v1_acquisition_submissions_batch_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchSubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchSubmissionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Submit Release Batch Route",
        "tags": [
          "Acquisition"
        ]
      }
    },
    "/v1/annotations": {
      "get": {
        "description": "Return paginated list of annotations, optionally filtered by book.",
        "operationId": "list_annotations_v1_annotations_get",
        "parameters": [
          {
            "in": "query",
            "name": "book_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Book Id"
            }
          },
          {
            "in": "query",
            "name": "color",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Color"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnotationList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all annotations",
        "tags": [
          "Annotations"
        ]
      }
    },
    "/v1/annotations/books/{book_id}": {
      "get": {
        "description": "Return paginated list of annotations for a specific book.",
        "operationId": "list_book_annotations_v1_annotations_books__book_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnotationList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List book annotations",
        "tags": [
          "Annotations"
        ]
      },
      "post": {
        "description": "Create a new annotation for a book.",
        "operationId": "create_annotation_v1_annotations_books__book_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAnnotationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Annotation"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create annotation",
        "tags": [
          "Annotations"
        ]
      }
    },
    "/v1/annotations/export": {
      "post": {
        "description": "Export annotations in various formats.",
        "operationId": "export_annotations_v1_annotations_export_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportAnnotationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportAnnotationsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Export annotations",
        "tags": [
          "Annotations"
        ]
      }
    },
    "/v1/annotations/{annotation_id}": {
      "delete": {
        "description": "Delete an annotation.",
        "operationId": "delete_annotation_v1_annotations__annotation_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "annotation_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Annotation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete annotation",
        "tags": [
          "Annotations"
        ]
      },
      "get": {
        "description": "Return detailed information about an annotation.",
        "operationId": "get_annotation_v1_annotations__annotation_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "annotation_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Annotation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Annotation"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get annotation details",
        "tags": [
          "Annotations"
        ]
      },
      "patch": {
        "description": "Update an annotation's note or color.",
        "operationId": "update_annotation_v1_annotations__annotation_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "annotation_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Annotation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAnnotationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Annotation"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update annotation",
        "tags": [
          "Annotations"
        ]
      }
    },
    "/v1/auth/exchange-code": {
      "post": {
        "description": "Exchange a one-time OAuth handoff code for Papyrus tokens.",
        "operationId": "exchange_code_v1_auth_exchange_code_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthTokens"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Exchange an OAuth browser code for Papyrus tokens",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/forgot-password": {
      "post": {
        "description": "Issue a password reset token when email delivery is enabled.",
        "operationId": "forgot_password_v1_auth_forgot_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Request password reset",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/jwks": {
      "get": {
        "description": "Expose the PowerSync public signing keys.",
        "operationId": "powersync_jwks_v1_auth_jwks_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "items": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "title": "Response Powersync Jwks V1 Auth Jwks Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Return the PowerSync signing JWKS",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/link/google/complete": {
      "post": {
        "description": "Consume a one-time code and link the Google identity to the authenticated user.",
        "operationId": "complete_google_link_v1_auth_link_google_complete_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthLinkCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Complete Google account linking",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/link/google/start": {
      "post": {
        "description": "Return the Google authorization URL for linking an account.",
        "operationId": "start_google_link_v1_auth_link_google_start_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationUrlResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Start Google account linking flow",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/login": {
      "post": {
        "description": "Authenticate a user with email and password credentials.",
        "operationId": "login_user_v1_auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthTokens"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Login with email and password",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/logout": {
      "post": {
        "description": "Invalidate the current session or all sessions if requested.",
        "operationId": "logout_user_v1_auth_logout_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LogoutRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Request"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Logout and invalidate the current session",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/logout-all": {
      "post": {
        "description": "Invalidate all refresh-token backed sessions for the user.",
        "operationId": "logout_all_v1_auth_logout_all_post",
        "responses": {
          "204": {
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Logout from all sessions",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/oauth/google/callback": {
      "get": {
        "description": "Handle the Google OAuth callback and redirect back to the app.",
        "operationId": "google_oauth_callback_v1_auth_oauth_google_callback_get",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "in": "query",
            "name": "error",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Error"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Complete the Google OAuth browser callback",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/oauth/google/start": {
      "get": {
        "description": "Redirect the user to Google for login.",
        "operationId": "google_oauth_start_v1_auth_oauth_google_start_get",
        "parameters": [
          {
            "description": "App callback URI for the browser flow",
            "in": "query",
            "name": "redirect_uri",
            "required": true,
            "schema": {
              "description": "App callback URI for the browser flow",
              "title": "Redirect Uri",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start Google OAuth login flow",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/powersync-token": {
      "post": {
        "description": "Mint a short-lived PowerSync JWT for the authenticated user.",
        "operationId": "powersync_token_v1_auth_powersync_token_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PowerSyncTokenResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mint a short-lived PowerSync token",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/refresh": {
      "post": {
        "description": "Exchange a valid refresh token for a new access token.",
        "operationId": "refresh_token_v1_auth_refresh_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthTokens"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Refresh access token",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/register": {
      "post": {
        "description": "Create a new user account with email and password.",
        "operationId": "register_user_v1_auth_register_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthTokens"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Register a new user account",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/resend-verification": {
      "post": {
        "description": "Issue a new verification token when email delivery is enabled.",
        "operationId": "resend_verification_v1_auth_resend_verification_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResendVerificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Resend verification email",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/reset-password": {
      "post": {
        "description": "Reset the user's password using a one-time token.",
        "operationId": "reset_password_v1_auth_reset_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset password with token",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/auth/verify-email": {
      "post": {
        "description": "Verify the user's email address using a one-time token.",
        "operationId": "verify_email_v1_auth_verify_email_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Verify email address",
        "tags": [
          "Auth"
        ]
      }
    },
    "/v1/bookmarks": {
      "get": {
        "description": "Return list of bookmarks, optionally filtered by book.",
        "operationId": "list_bookmarks_v1_bookmarks_get",
        "parameters": [
          {
            "in": "query",
            "name": "book_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Book Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookmarkList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all bookmarks",
        "tags": [
          "Bookmarks"
        ]
      }
    },
    "/v1/bookmarks/books/{book_id}": {
      "get": {
        "description": "Return list of bookmarks for a specific book.",
        "operationId": "list_book_bookmarks_v1_bookmarks_books__book_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookmarkList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List book bookmarks",
        "tags": [
          "Bookmarks"
        ]
      },
      "post": {
        "description": "Create a new bookmark for a book.",
        "operationId": "create_bookmark_v1_bookmarks_books__book_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBookmarkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bookmark"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create bookmark",
        "tags": [
          "Bookmarks"
        ]
      }
    },
    "/v1/bookmarks/{bookmark_id}": {
      "delete": {
        "description": "Delete a bookmark.",
        "operationId": "delete_bookmark_v1_bookmarks__bookmark_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "bookmark_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Bookmark Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete bookmark",
        "tags": [
          "Bookmarks"
        ]
      },
      "get": {
        "description": "Return detailed information about a bookmark.",
        "operationId": "get_bookmark_v1_bookmarks__bookmark_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "bookmark_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Bookmark Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bookmark"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get bookmark details",
        "tags": [
          "Bookmarks"
        ]
      },
      "patch": {
        "description": "Update a bookmark's note or color.",
        "operationId": "update_bookmark_v1_bookmarks__bookmark_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "bookmark_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Bookmark Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBookmarkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bookmark"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update bookmark",
        "tags": [
          "Bookmarks"
        ]
      }
    },
    "/v1/books": {
      "get": {
        "description": "Return a paginated list of books in the user's library.",
        "operationId": "list_books_v1_books_get",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ReadingStatus"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "shelf_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Shelf Id"
            }
          },
          {
            "in": "query",
            "name": "tag_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tag Id"
            }
          },
          {
            "in": "query",
            "name": "series_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Series Id"
            }
          },
          {
            "in": "query",
            "name": "is_physical",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Physical"
            }
          },
          {
            "in": "query",
            "name": "is_favorite",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Favorite"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Query"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List user's books",
        "tags": [
          "Books"
        ]
      },
      "post": {
        "description": "Add a new book to the user's library.",
        "operationId": "create_book_v1_books_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Book"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create a new book",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/batch": {
      "delete": {
        "description": "Delete multiple books in a single request.",
        "operationId": "batch_delete_books_v1_books_batch_delete",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchDeleteResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Batch delete books",
        "tags": [
          "Books"
        ]
      },
      "patch": {
        "description": "Update multiple books in a single request.",
        "operationId": "batch_update_books_v1_books_batch_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchUpdateResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Batch update books",
        "tags": [
          "Books"
        ]
      },
      "post": {
        "description": "Create multiple books in a single request.",
        "operationId": "batch_create_books_v1_books_batch_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreateResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Batch create books",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/metadata/fetch": {
      "post": {
        "description": "Search online sources for book metadata.",
        "operationId": "fetch_book_metadata_v1_books_metadata_fetch_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataFetchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataFetchResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Fetch metadata from online sources",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/{book_id}": {
      "delete": {
        "description": "Remove a book from the library.",
        "operationId": "delete_book_v1_books__book_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "delete_file",
            "required": false,
            "schema": {
              "default": false,
              "title": "Delete File",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete a book",
        "tags": [
          "Books"
        ]
      },
      "get": {
        "description": "Return detailed information about a specific book.",
        "operationId": "get_book_v1_books__book_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Book"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get book details",
        "tags": [
          "Books"
        ]
      },
      "patch": {
        "description": "Update book metadata fields.",
        "operationId": "update_book_v1_books__book_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Book"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update book metadata",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/{book_id}/cover": {
      "get": {
        "description": "Return the book's cover image.",
        "operationId": "get_book_cover_v1_books__book_id__cover_get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get book cover image",
        "tags": [
          "Books"
        ]
      },
      "put": {
        "description": "Upload or replace the book's cover image.",
        "operationId": "upload_book_cover_v1_books__book_id__cover_put",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "url",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Url"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_book_cover_v1_books__book_id__cover_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Book"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upload book cover image",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/{book_id}/progress": {
      "get": {
        "description": "Return the current reading progress for a book.",
        "operationId": "get_book_progress_v1_books__book_id__progress_get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProgress"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get reading progress",
        "tags": [
          "Books"
        ]
      },
      "put": {
        "description": "Update the reading position and status for a book.",
        "operationId": "update_book_progress_v1_books__book_id__progress_put",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProgressRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProgress"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update reading progress",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/{book_id}/shelves": {
      "get": {
        "description": "Return the shelves this book belongs to.",
        "operationId": "get_book_shelves_v1_books__book_id__shelves_get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShelvesResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get book's shelves",
        "tags": [
          "Books"
        ]
      },
      "put": {
        "description": "Replace all shelf assignments for this book.",
        "operationId": "set_book_shelves_v1_books__book_id__shelves_put",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShelfIdsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShelvesResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set book's shelves",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/books/{book_id}/tags": {
      "get": {
        "description": "Return the tags assigned to this book.",
        "operationId": "get_book_tags_v1_books__book_id__tags_get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get book's tags",
        "tags": [
          "Books"
        ]
      },
      "put": {
        "description": "Replace all tag assignments for this book.",
        "operationId": "set_book_tags_v1_books__book_id__tags_put",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagIdsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set book's tags",
        "tags": [
          "Books"
        ]
      }
    },
    "/v1/files/download/{file_path}": {
      "get": {
        "description": "Download a book file from storage.",
        "operationId": "download_file_v1_files_download__file_path__get",
        "parameters": [
          {
            "in": "path",
            "name": "file_path",
            "required": true,
            "schema": {
              "title": "File Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Download a book file",
        "tags": [
          "Files"
        ]
      }
    },
    "/v1/files/info/{file_path}": {
      "get": {
        "description": "Get information about a stored file.",
        "operationId": "get_file_info_v1_files_info__file_path__get",
        "parameters": [
          {
            "in": "path",
            "name": "file_path",
            "required": true,
            "schema": {
              "title": "File Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileInfo"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get file information",
        "tags": [
          "Files"
        ]
      }
    },
    "/v1/files/upload": {
      "post": {
        "description": "Upload a book file to storage.",
        "operationId": "upload_file_v1_files_upload_post",
        "parameters": [
          {
            "in": "query",
            "name": "storage_backend_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Storage Backend Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_file_v1_files_upload_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileInfo"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upload a book file",
        "tags": [
          "Files"
        ]
      }
    },
    "/v1/files/{file_path}": {
      "delete": {
        "description": "Delete a file from storage.",
        "operationId": "delete_file_v1_files__file_path__delete",
        "parameters": [
          {
            "in": "path",
            "name": "file_path",
            "required": true,
            "schema": {
              "title": "File Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete a file",
        "tags": [
          "Files"
        ]
      }
    },
    "/v1/goals": {
      "get": {
        "description": "Return all goals for the user.",
        "operationId": "list_goals_v1_goals_get",
        "parameters": [
          {
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Active"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoalList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all goals",
        "tags": [
          "Goals"
        ]
      },
      "post": {
        "description": "Create a new reading goal.",
        "operationId": "create_goal_v1_goals_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGoalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Goal"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create a new goal",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/goals/{goal_id}": {
      "delete": {
        "description": "Delete a goal.",
        "operationId": "delete_goal_v1_goals__goal_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete goal",
        "tags": [
          "Goals"
        ]
      },
      "get": {
        "description": "Return detailed information about a goal.",
        "operationId": "get_goal_v1_goals__goal_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Goal"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get goal details",
        "tags": [
          "Goals"
        ]
      },
      "patch": {
        "description": "Update goal properties.",
        "operationId": "update_goal_v1_goals__goal_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGoalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Goal"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update goal",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/media": {
      "post": {
        "description": "Upload a book file or cover image for the authenticated user.",
        "operationId": "upload_media_v1_media_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_media_v1_media_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaAssetResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upload private media",
        "tags": [
          "Media"
        ]
      }
    },
    "/v1/media/usage": {
      "get": {
        "description": "Return authenticated user's file storage usage.",
        "operationId": "get_media_usage_v1_media_usage_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaUsageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get media storage usage",
        "tags": [
          "Media"
        ]
      }
    },
    "/v1/media/{asset_id}": {
      "delete": {
        "description": "Delete an owned media asset.",
        "operationId": "delete_media_v1_media__asset_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "asset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Asset Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete private media",
        "tags": [
          "Media"
        ]
      },
      "get": {
        "description": "Download an owned media asset.",
        "operationId": "download_media_v1_media__asset_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "asset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Asset Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Download private media",
        "tags": [
          "Media"
        ]
      }
    },
    "/v1/notes": {
      "get": {
        "description": "Return paginated list of notes, optionally filtered by book.",
        "operationId": "list_notes_v1_notes_get",
        "parameters": [
          {
            "in": "query",
            "name": "book_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Book Id"
            }
          },
          {
            "in": "query",
            "name": "is_pinned",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Pinned"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all notes",
        "tags": [
          "Notes"
        ]
      }
    },
    "/v1/notes/books/{book_id}": {
      "get": {
        "description": "Return paginated list of notes for a specific book.",
        "operationId": "list_book_notes_v1_notes_books__book_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List book notes",
        "tags": [
          "Notes"
        ]
      },
      "post": {
        "description": "Create a new note for a book.",
        "operationId": "create_note_v1_notes_books__book_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create note",
        "tags": [
          "Notes"
        ]
      }
    },
    "/v1/notes/{note_id}": {
      "delete": {
        "description": "Delete a note.",
        "operationId": "delete_note_v1_notes__note_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "note_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete note",
        "tags": [
          "Notes"
        ]
      },
      "get": {
        "description": "Return detailed information about a note.",
        "operationId": "get_note_v1_notes__note_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "note_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get note details",
        "tags": [
          "Notes"
        ]
      },
      "patch": {
        "description": "Update a note's content.",
        "operationId": "update_note_v1_notes__note_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "note_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update note",
        "tags": [
          "Notes"
        ]
      }
    },
    "/v1/opds/relay": {
      "post": {
        "description": "Stream a public catalog resource without requiring a Papyrus account.",
        "operationId": "relay_resource_v1_opds_relay_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpdsRelayRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Retrieve an OPDS resource",
        "tags": [
          "OPDS"
        ]
      }
    },
    "/v1/progress/sessions": {
      "get": {
        "description": "Return paginated list of reading sessions.",
        "operationId": "list_reading_sessions_v1_progress_sessions_get",
        "parameters": [
          {
            "in": "query",
            "name": "book_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Book Id"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingSessionList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List reading sessions",
        "tags": [
          "Progress"
        ]
      },
      "post": {
        "description": "Record a new reading session.",
        "operationId": "create_reading_session_v1_progress_sessions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReadingSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingSession"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Record reading session",
        "tags": [
          "Progress"
        ]
      }
    },
    "/v1/progress/statistics": {
      "get": {
        "description": "Return reading statistics for the specified period.",
        "operationId": "get_reading_statistics_v1_progress_statistics_get",
        "parameters": [
          {
            "description": "Start date for statistics period",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Start date for statistics period",
              "title": "Start Date"
            }
          },
          {
            "description": "End date for statistics period",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "End date for statistics period",
              "title": "End Date"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingStatistics"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get reading statistics",
        "tags": [
          "Progress"
        ]
      }
    },
    "/v1/reading-profiles": {
      "get": {
        "description": "Return all reading profiles for the user.",
        "operationId": "list_reading_profiles_v1_reading_profiles_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProfileList"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List reading profiles",
        "tags": [
          "Reading Profiles"
        ]
      },
      "post": {
        "description": "Create a new reading profile.",
        "operationId": "create_reading_profile_v1_reading_profiles_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReadingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProfile"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create reading profile",
        "tags": [
          "Reading Profiles"
        ]
      }
    },
    "/v1/reading-profiles/{profile_id}": {
      "delete": {
        "description": "Delete a reading profile.",
        "operationId": "delete_reading_profile_v1_reading_profiles__profile_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Profile Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete reading profile",
        "tags": [
          "Reading Profiles"
        ]
      },
      "get": {
        "description": "Return detailed information about a reading profile.",
        "operationId": "get_reading_profile_v1_reading_profiles__profile_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Profile Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProfile"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get reading profile",
        "tags": [
          "Reading Profiles"
        ]
      },
      "patch": {
        "description": "Update a reading profile.",
        "operationId": "update_reading_profile_v1_reading_profiles__profile_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Profile Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReadingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProfile"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update reading profile",
        "tags": [
          "Reading Profiles"
        ]
      }
    },
    "/v1/reading-profiles/{profile_id}/set-default": {
      "post": {
        "description": "Set a reading profile as the default.",
        "operationId": "set_default_reading_profile_v1_reading_profiles__profile_id__set_default_post",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Profile Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingProfile"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set as default profile",
        "tags": [
          "Reading Profiles"
        ]
      }
    },
    "/v1/saved-filters": {
      "get": {
        "description": "Return all saved filters for the user.",
        "operationId": "list_saved_filters_v1_saved_filters_get",
        "parameters": [
          {
            "in": "query",
            "name": "is_pinned",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Pinned"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedFilterList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List saved filters",
        "tags": [
          "Saved Filters"
        ]
      },
      "post": {
        "description": "Create a new saved filter.",
        "operationId": "create_saved_filter_v1_saved_filters_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSavedFilterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedFilter"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create saved filter",
        "tags": [
          "Saved Filters"
        ]
      }
    },
    "/v1/saved-filters/{filter_id}": {
      "delete": {
        "description": "Delete a saved filter.",
        "operationId": "delete_saved_filter_v1_saved_filters__filter_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "filter_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Filter Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete saved filter",
        "tags": [
          "Saved Filters"
        ]
      },
      "get": {
        "description": "Return detailed information about a saved filter.",
        "operationId": "get_saved_filter_v1_saved_filters__filter_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "filter_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Filter Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedFilter"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get saved filter",
        "tags": [
          "Saved Filters"
        ]
      },
      "patch": {
        "description": "Update a saved filter.",
        "operationId": "update_saved_filter_v1_saved_filters__filter_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "filter_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Filter Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSavedFilterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedFilter"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update saved filter",
        "tags": [
          "Saved Filters"
        ]
      }
    },
    "/v1/saved-filters/{filter_id}/use": {
      "post": {
        "description": "Mark a filter as used, updating usage count and last_used_at.",
        "operationId": "use_saved_filter_v1_saved_filters__filter_id__use_post",
        "parameters": [
          {
            "in": "path",
            "name": "filter_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Filter Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedFilter"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark filter as used",
        "tags": [
          "Saved Filters"
        ]
      }
    },
    "/v1/series": {
      "get": {
        "description": "Return all series for the user.",
        "operationId": "list_series_v1_series_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeriesList"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all series",
        "tags": [
          "Series"
        ]
      },
      "post": {
        "description": "Create a new series.",
        "operationId": "create_series_v1_series_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Series"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create a new series",
        "tags": [
          "Series"
        ]
      }
    },
    "/v1/series/{series_id}": {
      "delete": {
        "description": "Delete a series. Books are not deleted.",
        "operationId": "delete_series_v1_series__series_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "series_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Series Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete series",
        "tags": [
          "Series"
        ]
      },
      "get": {
        "description": "Return detailed information about a series with its books.",
        "operationId": "get_series_v1_series__series_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "series_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Series Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeriesWithBooks"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get series details",
        "tags": [
          "Series"
        ]
      },
      "patch": {
        "description": "Update series properties.",
        "operationId": "update_series_v1_series__series_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "series_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Series Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSeriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Series"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update series",
        "tags": [
          "Series"
        ]
      }
    },
    "/v1/shelves": {
      "get": {
        "description": "Return all shelves for the user, including nested structure.",
        "operationId": "list_shelves_v1_shelves_get",
        "parameters": [
          {
            "in": "query",
            "name": "include_books",
            "required": false,
            "schema": {
              "default": false,
              "title": "Include Books",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "flat",
            "required": false,
            "schema": {
              "default": false,
              "title": "Flat",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShelfList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all shelves",
        "tags": [
          "Shelves"
        ]
      },
      "post": {
        "description": "Create a new shelf or sub-shelf.",
        "operationId": "create_shelf_v1_shelves_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShelfRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shelf"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create a new shelf",
        "tags": [
          "Shelves"
        ]
      }
    },
    "/v1/shelves/{shelf_id}": {
      "delete": {
        "description": "Delete a shelf. Books are not deleted.",
        "operationId": "delete_shelf_v1_shelves__shelf_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          },
          {
            "description": "Move books to this shelf",
            "in": "query",
            "name": "move_books_to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Move books to this shelf",
              "title": "Move Books To"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete shelf",
        "tags": [
          "Shelves"
        ]
      },
      "get": {
        "description": "Return detailed information about a shelf.",
        "operationId": "get_shelf_v1_shelves__shelf_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shelf"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get shelf details",
        "tags": [
          "Shelves"
        ]
      },
      "patch": {
        "description": "Update shelf properties.",
        "operationId": "update_shelf_v1_shelves__shelf_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShelfRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Shelf"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update shelf",
        "tags": [
          "Shelves"
        ]
      }
    },
    "/v1/shelves/{shelf_id}/books": {
      "get": {
        "description": "Return paginated list of books in this shelf.",
        "operationId": "list_shelf_books_v1_shelves__shelf_id__books_get",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "Page number",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Items per page",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "description": "Items per page",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "Sort field with optional - prefix for descending",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field with optional - prefix for descending",
              "title": "Sort"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookList"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List books in shelf",
        "tags": [
          "Shelves"
        ]
      }
    },
    "/v1/shelves/{shelf_id}/books/remove": {
      "post": {
        "description": "Remove multiple books from this shelf in one request.",
        "operationId": "remove_books_from_shelf_v1_shelves__shelf_id__books_remove_post",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveBooksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveBooksResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove multiple books from shelf",
        "tags": [
          "Shelves"
        ]
      }
    },
    "/v1/shelves/{shelf_id}/books/{book_id}": {
      "delete": {
        "description": "Remove a book from this shelf.",
        "operationId": "remove_book_from_shelf_v1_shelves__shelf_id__books__book_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove book from shelf",
        "tags": [
          "Shelves"
        ]
      },
      "post": {
        "description": "Add a book to this shelf.",
        "operationId": "add_book_to_shelf_v1_shelves__shelf_id__books__book_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "shelf_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Shelf Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "book_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Book Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add book to shelf",
        "tags": [
          "Shelves"
        ]
      }
    },
    "/v1/storage/backends": {
      "get": {
        "description": "Return all configured storage backends for the user.",
        "operationId": "list_storage_backends_v1_storage_backends_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackendList"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List storage backends",
        "tags": [
          "Storage"
        ]
      },
      "post": {
        "description": "Add a new storage backend configuration.",
        "operationId": "create_storage_backend_v1_storage_backends_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStorageBackendRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackend"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add storage backend",
        "tags": [
          "Storage"
        ]
      }
    },
    "/v1/storage/backends/set-primary": {
      "post": {
        "description": "Set a storage backend as the primary.",
        "operationId": "set_primary_storage_backend_v1_storage_backends_set_primary_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPrimaryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackend"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set primary storage backend",
        "tags": [
          "Storage"
        ]
      }
    },
    "/v1/storage/backends/{backend_id}": {
      "delete": {
        "description": "Remove a storage backend configuration.",
        "operationId": "delete_storage_backend_v1_storage_backends__backend_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "backend_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Backend Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove storage backend",
        "tags": [
          "Storage"
        ]
      },
      "get": {
        "description": "Return detailed information about a storage backend.",
        "operationId": "get_storage_backend_v1_storage_backends__backend_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "backend_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Backend Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackend"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get storage backend details",
        "tags": [
          "Storage"
        ]
      },
      "patch": {
        "description": "Update storage backend configuration.",
        "operationId": "update_storage_backend_v1_storage_backends__backend_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "backend_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Backend Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStorageBackendRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackend"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update storage backend",
        "tags": [
          "Storage"
        ]
      }
    },
    "/v1/storage/backends/{backend_id}/test": {
      "post": {
        "description": "Test the connection to a storage backend.",
        "operationId": "test_storage_backend_v1_storage_backends__backend_id__test_post",
        "parameters": [
          {
            "in": "path",
            "name": "backend_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Backend Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageBackend"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Test storage backend connection",
        "tags": [
          "Storage"
        ]
      }
    },
    "/v1/sync/powersync-upload": {
      "post": {
        "description": "Apply one PowerSync CRUD transaction atomically.",
        "operationId": "upload_powersync_changes_v1_sync_powersync_upload_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PowerSyncUploadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PowerSyncUploadResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upload PowerSync client-side mutations",
        "tags": [
          "Sync"
        ]
      }
    },
    "/v1/sync/settings": {
      "get": {
        "description": "Return public sync capabilities for client custom-server setup.",
        "operationId": "get_data_sync_settings_v1_sync_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataSyncSettingsResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get public data sync settings",
        "tags": [
          "Sync"
        ]
      }
    },
    "/v1/tags": {
      "get": {
        "description": "Return all tags for the user.",
        "operationId": "list_tags_v1_tags_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagList"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all tags",
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "description": "Create a new tag.",
        "operationId": "create_tag_v1_tags_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create a new tag",
        "tags": [
          "Tags"
        ]
      }
    },
    "/v1/tags/{tag_id}": {
      "delete": {
        "description": "Delete a tag. Removes from all books.",
        "operationId": "delete_tag_v1_tags__tag_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete tag",
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "description": "Return detailed information about a tag.",
        "operationId": "get_tag_v1_tags__tag_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get tag details",
        "tags": [
          "Tags"
        ]
      },
      "patch": {
        "description": "Update tag properties.",
        "operationId": "update_tag_v1_tags__tag_id__patch",
        "parameters": [
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update tag",
        "tags": [
          "Tags"
        ]
      }
    },
    "/v1/users/me": {
      "delete": {
        "description": "Disable the user account and revoke active sessions.",
        "operationId": "delete_current_user_v1_users_me_delete",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete current user account",
        "tags": [
          "Users"
        ]
      },
      "get": {
        "description": "Return the authenticated user's profile information.",
        "operationId": "get_current_user_v1_users_me_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get current user profile",
        "tags": [
          "Users"
        ]
      },
      "patch": {
        "description": "Update the authenticated user's profile information.",
        "operationId": "update_current_user_v1_users_me_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update current user profile",
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/users/me/change-password": {
      "post": {
        "description": "Change the user's password and revoke existing sessions.",
        "operationId": "change_password_v1_users_me_change_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Change password",
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/users/me/preferences": {
      "get": {
        "description": "Return the user's application preferences.",
        "operationId": "get_user_preferences_v1_users_me_preferences_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferences"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get user preferences",
        "tags": [
          "Users"
        ]
      },
      "put": {
        "description": "Update the user's application preferences.",
        "operationId": "update_user_preferences_v1_users_me_preferences_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPreferences"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPreferences"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update user preferences",
        "tags": [
          "Users"
        ]
      }
    }
  }
}
