{
  "openapi": "3.1.0",
  "info": {
    "title": "Wardrowbe API",
    "description": "AI-powered wardrobe management and outfit recommendations. This is the self-hosted API: every route requires a Bearer JWT (OIDC or dev-credentials login), and family-shared routes further check the caller's role (member/admin) on that family.",
    "version": "1.0.0",
    "x-source": "Snapshot of the self-hosted backend's own /openapi.json. Deploy your own instance (https://github.com/Anyesh/wardrowbe) for a live, always-current copy at http://<your-host>:8000/openapi.json."
  },
  "paths": {
    "/api/v1/health": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Health Check",
        "operationId": "health_check_api_v1_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object",
                  "title": "Response Health Check Api V1 Health Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/capabilities": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Capabilities",
        "description": "Report effective AI capabilities for external agents.\n\n`ai.*` \u2014 whether the internal AI capability is active. `false` means the backend\nis deferring that work to an external agent.\n`features.*` \u2014 whether the write-back endpoint for that capability exists and\naccepts agent-authored results. `false` until the endpoint lands.\nPublic / no-auth: leaks no user data.",
        "operationId": "capabilities_api_v1_capabilities_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Capabilities Api V1 Capabilities Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health/ready": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Readiness Check",
        "operationId": "readiness_check_api_v1_health_ready_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Readiness Check Api V1 Health Ready Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health/features": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Feature Check",
        "operationId": "feature_check_api_v1_health_features_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Feature Check Api V1 Health Features Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health/ai": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Ai Health Check",
        "operationId": "ai_health_check_api_v1_health_ai_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Ai Health Check Api V1 Health Ai Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/mobile-callback": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "Mobile Oidc Callback",
        "operationId": "mobile_oidc_callback_api_v1_auth_mobile_callback_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/config": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "Get Auth Config",
        "operationId": "get_auth_config_api_v1_auth_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/status": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "Auth Status",
        "operationId": "auth_status_api_v1_auth_status_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthStatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/sync": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Sync User",
        "operationId": "sync_user_api_v1_auth_sync_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSyncRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSyncResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/session": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "Get Session",
        "operationId": "get_session_api_v1_auth_session_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/users/me": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get Profile",
        "operationId": "get_profile_api_v1_users_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProfileResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update Profile",
        "operationId": "update_profile_api_v1_users_me_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserProfileUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProfileResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/users/me/onboarding/complete": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Complete Onboarding",
        "operationId": "complete_onboarding_api_v1_users_me_onboarding_complete_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingCompleteResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "List Items",
        "operationId": "list_items_api_v1_items_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Type"
            }
          },
          {
            "name": "subtype",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subtype"
            }
          },
          {
            "name": "colors",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Colors"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "tagging_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tagging Status"
            }
          },
          {
            "name": "favorite",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Favorite"
            }
          },
          {
            "name": "needs_wash",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Needs Wash"
            }
          },
          {
            "name": "is_archived",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Is Archived"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "desc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Create Item",
        "operationId": "create_item_api_v1_items_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_item_api_v1_items_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/bulk": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Bulk Create Items",
        "operationId": "bulk_create_items_api_v1_items_bulk_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_bulk_create_items_api_v1_items_bulk_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUploadResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/bulk/delete": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Bulk Delete Items",
        "operationId": "bulk_delete_items_api_v1_items_bulk_delete_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkDeleteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/bulk/analyze": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Bulk Analyze Items",
        "operationId": "bulk_analyze_items_api_v1_items_bulk_analyze_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAnalyzeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkAnalyzeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/types": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Item Types",
        "operationId": "get_item_types_api_v1_items_types_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "type": "array",
                  "title": "Response Get Item Types Api V1 Items Types Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/colors": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Color Distribution",
        "operationId": "get_color_distribution_api_v1_items_colors_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "type": "array",
                  "title": "Response Get Color Distribution Api V1 Items Colors Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/tagging-progress": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Tagging Progress",
        "operationId": "get_tagging_progress_api_v1_items_tagging_progress_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaggingProgressResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/items/{item_id}": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Item",
        "operationId": "get_item_api_v1_items__item_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Items"
        ],
        "summary": "Update Item",
        "operationId": "update_item_api_v1_items__item_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Items"
        ],
        "summary": "Delete Item",
        "operationId": "delete_item_api_v1_items__item_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/archive": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Archive Item",
        "operationId": "archive_item_api_v1_items__item_id__archive_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/restore": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Restore Item",
        "operationId": "restore_item_api_v1_items__item_id__restore_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/wear": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Log Item Wear",
        "operationId": "log_item_wear_api_v1_items__item_id__wear_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogWearRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/history": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Item History",
        "operationId": "get_item_history_api_v1_items__item_id__history_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 10,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "title": "Response Get Item History Api V1 Items  Item Id  History Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/wear-stats": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Item Wear Stats",
        "operationId": "get_item_wear_stats_api_v1_items__item_id__wear_stats_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Get Item Wear Stats Api V1 Items  Item Id  Wear Stats Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/wash": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Log Item Wash",
        "operationId": "log_item_wash_api_v1_items__item_id__wash_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogWashRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/wash-history": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get Item Wash History",
        "operationId": "get_item_wash_history_api_v1_items__item_id__wash_history_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 10,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WashHistoryResponse"
                  },
                  "title": "Response Get Item Wash History Api V1 Items  Item Id  Wash History Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/analyze": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Trigger Ai Analysis",
        "operationId": "trigger_ai_analysis_api_v1_items__item_id__analyze_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Trigger Ai Analysis Api V1 Items  Item Id  Analyze Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/retag": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Retag Item",
        "operationId": "retag_item_api_v1_items__item_id__retag_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/cancel-analysis": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Cancel Item Analysis",
        "operationId": "cancel_item_analysis_api_v1_items__item_id__cancel_analysis_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/rotate": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Rotate Item Image",
        "operationId": "rotate_item_image_api_v1_items__item_id__rotate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(cw|ccw)$",
              "description": "Rotation direction: cw (clockwise) or ccw (counter-clockwise)",
              "default": "cw",
              "title": "Direction"
            },
            "description": "Rotation direction: cw (clockwise) or ccw (counter-clockwise)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/remove-background": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Remove Item Background",
        "operationId": "remove_item_background_api_v1_items__item_id__remove_background_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveBackgroundRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/restore-original": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Restore Item Original",
        "operationId": "restore_item_original_api_v1_items__item_id__restore_original_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/image": {
      "put": {
        "tags": [
          "Items"
        ],
        "summary": "Replace Item Image",
        "operationId": "replace_item_image_api_v1_items__item_id__image_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_replace_item_image_api_v1_items__item_id__image_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/images": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Add Item Image",
        "operationId": "add_item_image_api_v1_items__item_id__images_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_add_item_image_api_v1_items__item_id__images_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemImageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/images/{image_id}": {
      "delete": {
        "tags": [
          "Items"
        ],
        "summary": "Delete Item Image",
        "operationId": "delete_item_image_api_v1_items__item_id__images__image_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "image_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Image Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/images/reorder": {
      "patch": {
        "tags": [
          "Items"
        ],
        "summary": "Reorder Item Images",
        "operationId": "reorder_item_images_api_v1_items__item_id__images_reorder_patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderImagesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemImageResponse"
                  },
                  "title": "Response Reorder Item Images Api V1 Items  Item Id  Images Reorder Patch"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/items/{item_id}/images/{image_id}/set-primary": {
      "post": {
        "tags": [
          "Items"
        ],
        "summary": "Set Primary Image",
        "operationId": "set_primary_image_api_v1_items__item_id__images__image_id__set_primary_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "image_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Image Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/images/{user_id}/{filename}": {
      "get": {
        "tags": [
          "Images"
        ],
        "summary": "Get Image",
        "operationId": "get_image_api_v1_images__user_id___filename__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          },
          {
            "name": "filename",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Filename"
            }
          },
          {
            "name": "expires",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Expires"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sig"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/me/preferences": {
      "get": {
        "tags": [
          "Preferences"
        ],
        "summary": "Get Preferences",
        "operationId": "get_preferences_api_v1_users_me_preferences_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreferenceResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Preferences"
        ],
        "summary": "Update Preferences",
        "operationId": "update_preferences_api_v1_users_me_preferences_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreferenceUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreferenceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/users/me/preferences/reset": {
      "post": {
        "tags": [
          "Preferences"
        ],
        "summary": "Reset Preferences",
        "operationId": "reset_preferences_api_v1_users_me_preferences_reset_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreferenceResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/users/me/preferences/excluded-items/{item_id}": {
      "post": {
        "tags": [
          "Preferences"
        ],
        "summary": "Add Excluded Item",
        "operationId": "add_excluded_item_api_v1_users_me_preferences_excluded_items__item_id__post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Add Excluded Item Api V1 Users Me Preferences Excluded Items  Item Id  Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Preferences"
        ],
        "summary": "Remove Excluded Item",
        "operationId": "remove_excluded_item_api_v1_users_me_preferences_excluded_items__item_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Remove Excluded Item Api V1 Users Me Preferences Excluded Items  Item Id  Delete"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/me/preferences/test-ai-endpoint": {
      "post": {
        "tags": [
          "Preferences"
        ],
        "summary": "Test Ai Endpoint",
        "operationId": "test_ai_endpoint_api_v1_users_me_preferences_test_ai_endpoint_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "type": "object",
                "title": "Data"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Test Ai Endpoint Api V1 Users Me Preferences Test Ai Endpoint Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/me": {
      "get": {
        "tags": [
          "Families"
        ],
        "summary": "Get My Family",
        "operationId": "get_my_family_api_v1_families_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FamilyResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Families"
        ],
        "summary": "Update Family",
        "operationId": "update_family_api_v1_families_me_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FamilyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FamilyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Create Family",
        "operationId": "create_family_api_v1_families_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FamilyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FamilyCreateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/me/regenerate-code": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Regenerate Invite Code",
        "operationId": "regenerate_invite_code_api_v1_families_me_regenerate_code_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteCodeResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/join": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Join Family",
        "operationId": "join_family_api_v1_families_join_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JoinFamilyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JoinFamilyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/join-by-token": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Join Family By Token",
        "operationId": "join_family_by_token_api_v1_families_join_by_token_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JoinByTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JoinFamilyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/me/leave": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Leave Family",
        "operationId": "leave_family_api_v1_families_me_leave_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/me/invite": {
      "post": {
        "tags": [
          "Families"
        ],
        "summary": "Invite Member",
        "operationId": "invite_member_api_v1_families_me_invite_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/families/me/invites/{invite_id}": {
      "delete": {
        "tags": [
          "Families"
        ],
        "summary": "Cancel Invite",
        "operationId": "cancel_invite_api_v1_families_me_invites__invite_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "invite_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Invite Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/families/me/members/{member_id}": {
      "patch": {
        "tags": [
          "Families"
        ],
        "summary": "Update Member Role",
        "operationId": "update_member_role_api_v1_families_me_members__member_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "member_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Member Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FamilyMember"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Families"
        ],
        "summary": "Remove Member",
        "operationId": "remove_member_api_v1_families_me_members__member_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "member_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Member Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/weather/current": {
      "get": {
        "tags": [
          "Weather"
        ],
        "summary": "Get Current Weather",
        "operationId": "get_current_weather_api_v1_weather_current_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "latitude",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 90,
                  "minimum": -90
                },
                {
                  "type": "null"
                }
              ],
              "title": "Latitude"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 180,
                  "minimum": -180
                },
                {
                  "type": "null"
                }
              ],
              "title": "Longitude"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/weather/forecast": {
      "get": {
        "tags": [
          "Weather"
        ],
        "summary": "Get Weather Forecast",
        "operationId": "get_weather_forecast_api_v1_weather_forecast_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "latitude",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 90,
                  "minimum": -90
                },
                {
                  "type": "null"
                }
              ],
              "title": "Latitude"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 180,
                  "minimum": -180
                },
                {
                  "type": "null"
                }
              ],
              "title": "Longitude"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 16,
              "minimum": 1,
              "default": 7,
              "title": "Days"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForecastResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/suggest": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Suggest Outfit",
        "operationId": "suggest_outfit_api_v1_outfits_suggest_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/outfits/suggestions": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Create External Suggestion",
        "description": "Persist an externally-authored suggestion; available regardless of the AI flags.",
        "operationId": "create_external_suggestion_api_v1_outfits_suggestions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestionCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/outfits": {
      "get": {
        "tags": [
          "Outfits"
        ],
        "summary": "List Outfits",
        "operationId": "list_outfits_api_v1_outfits_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "occasion",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Occasion"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Date From"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Date To"
            }
          },
          {
            "name": "family_member_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "View a family member's outfits",
              "title": "Family Member Id"
            },
            "description": "View a family member's outfits"
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated source enum filter",
              "title": "Source"
            },
            "description": "Comma-separated source enum filter"
          },
          {
            "name": "is_lookbook",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "true for templates only",
              "title": "Is Lookbook"
            },
            "description": "true for templates only"
          },
          {
            "name": "is_replacement",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Replacement"
            }
          },
          {
            "name": "has_source_item",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Has Source Item"
            }
          },
          {
            "name": "item_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Item Type"
            }
          },
          {
            "name": "source_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legacy alias for item_type used by /pairings",
              "title": "Source Type"
            },
            "description": "Legacy alias for item_type used by /pairings"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 50
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "name": "cloned_from_outfit_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to wear instances of a specific template",
              "title": "Cloned From Outfit Id"
            },
            "description": "Filter to wear instances of a specific template"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/bulk/delete": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Bulk Delete Outfits",
        "operationId": "bulk_delete_outfits_api_v1_outfits_bulk_delete_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteOutfitsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkDeleteOutfitsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/outfits/{outfit_id}": {
      "get": {
        "tags": [
          "Outfits"
        ],
        "summary": "Get Outfit",
        "operationId": "get_outfit_api_v1_outfits__outfit_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Outfits"
        ],
        "summary": "Delete Outfit",
        "operationId": "delete_outfit_api_v1_outfits__outfit_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Outfits"
        ],
        "summary": "Patch Outfit Endpoint",
        "operationId": "patch_outfit_endpoint_api_v1_outfits__outfit_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchOutfitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/accept": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Accept Outfit",
        "operationId": "accept_outfit_api_v1_outfits__outfit_id__accept_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/reject": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Reject Outfit",
        "operationId": "reject_outfit_api_v1_outfits__outfit_id__reject_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/skip": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Skip Outfit",
        "operationId": "skip_outfit_api_v1_outfits__outfit_id__skip_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/feedback": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Submit Feedback",
        "operationId": "submit_feedback_api_v1_outfits__outfit_id__feedback_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Outfits"
        ],
        "summary": "Get Feedback",
        "operationId": "get_feedback_api_v1_outfits__outfit_id__feedback_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/family-rating": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Submit Family Rating",
        "operationId": "submit_family_rating_api_v1_outfits__outfit_id__family_rating_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FamilyRatingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FamilyRatingResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Outfits"
        ],
        "summary": "Delete Family Rating",
        "operationId": "delete_family_rating_api_v1_outfits__outfit_id__family_rating_delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/family-ratings": {
      "get": {
        "tags": [
          "Outfits"
        ],
        "summary": "Get Family Ratings",
        "operationId": "get_family_ratings_api_v1_outfits__outfit_id__family_ratings_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FamilyRatingResponse"
                  },
                  "title": "Response Get Family Ratings Api V1 Outfits  Outfit Id  Family Ratings Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/studio": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Create Studio Outfit",
        "operationId": "create_studio_outfit_api_v1_outfits_studio_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/outfits/{outfit_id}/wore-instead": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Create Wore Instead Outfit",
        "operationId": "create_wore_instead_outfit_api_v1_outfits__outfit_id__wore_instead_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WoreInsteadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/clone-to-lookbook": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Clone Outfit To Lookbook",
        "operationId": "clone_outfit_to_lookbook_api_v1_outfits__outfit_id__clone_to_lookbook_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloneToLookbookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/outfits/{outfit_id}/wear-today": {
      "post": {
        "tags": [
          "Outfits"
        ],
        "summary": "Wear Outfit Today",
        "operationId": "wear_outfit_today_api_v1_outfits__outfit_id__wear_today_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outfit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Outfit Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WearTodayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutfitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pairings/generate/{item_id}": {
      "post": {
        "tags": [
          "Pairings"
        ],
        "summary": "Generate Pairings",
        "operationId": "generate_pairings_api_v1_pairings_generate__item_id__post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneratePairingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeneratePairingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pairings": {
      "get": {
        "tags": [
          "Pairings"
        ],
        "summary": "List Pairings",
        "operationId": "list_pairings_api_v1_pairings_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "source_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by source item type",
              "title": "Source Type"
            },
            "description": "Filter by source item type"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PairingListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pairings/item/{item_id}": {
      "get": {
        "tags": [
          "Pairings"
        ],
        "summary": "List Item Pairings",
        "operationId": "list_item_pairings_api_v1_pairings_item__item_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PairingListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pairings"
        ],
        "summary": "Create External Pairing",
        "description": "Persist an externally-authored pairing; available regardless of the AI flags.",
        "operationId": "create_external_pairing_api_v1_pairings_item__item_id__post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PairingCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PairingResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pairings/{pairing_id}": {
      "delete": {
        "tags": [
          "Pairings"
        ],
        "summary": "Delete Pairing",
        "operationId": "delete_pairing_api_v1_pairings__pairing_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "pairing_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Pairing Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/notifications/defaults/ntfy": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "Get Ntfy Defaults",
        "operationId": "get_ntfy_defaults_api_v1_notifications_defaults_ntfy_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/notifications/settings": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "List Notification Settings",
        "operationId": "list_notification_settings_api_v1_notifications_settings_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/NotificationSettingsResponse"
                  },
                  "type": "array",
                  "title": "Response List Notification Settings Api V1 Notifications Settings Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "notifications"
        ],
        "summary": "Create Notification Setting",
        "operationId": "create_notification_setting_api_v1_notifications_settings_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationSettingsCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSettingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/notifications/settings/{setting_id}": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "Get Notification Setting",
        "operationId": "get_notification_setting_api_v1_notifications_settings__setting_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "setting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Setting Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSettingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "notifications"
        ],
        "summary": "Update Notification Setting",
        "operationId": "update_notification_setting_api_v1_notifications_settings__setting_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "setting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Setting Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationSettingsUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSettingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "notifications"
        ],
        "summary": "Delete Notification Setting",
        "operationId": "delete_notification_setting_api_v1_notifications_settings__setting_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "setting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Setting Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/notifications/settings/{setting_id}/test": {
      "post": {
        "tags": [
          "notifications"
        ],
        "summary": "Test Notification Setting",
        "operationId": "test_notification_setting_api_v1_notifications_settings__setting_id__test_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "setting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Setting Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestNotificationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/notifications/push-token": {
      "post": {
        "tags": [
          "notifications"
        ],
        "summary": "Register Push Token",
        "operationId": "register_push_token_api_v1_notifications_push_token_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSettingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/notifications/schedules": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "List Schedules",
        "operationId": "list_schedules_api_v1_notifications_schedules_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ScheduleResponse"
                  },
                  "type": "array",
                  "title": "Response List Schedules Api V1 Notifications Schedules Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "notifications"
        ],
        "summary": "Create Schedule",
        "operationId": "create_schedule_api_v1_notifications_schedules_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/notifications/schedules/{schedule_id}": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "Get Schedule",
        "operationId": "get_schedule_api_v1_notifications_schedules__schedule_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Schedule Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "notifications"
        ],
        "summary": "Update Schedule",
        "operationId": "update_schedule_api_v1_notifications_schedules__schedule_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Schedule Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "notifications"
        ],
        "summary": "Delete Schedule",
        "operationId": "delete_schedule_api_v1_notifications_schedules__schedule_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Schedule Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/notifications/history": {
      "get": {
        "tags": [
          "notifications"
        ],
        "summary": "List Notification History",
        "operationId": "list_notification_history_api_v1_notifications_history_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationResponse"
                  },
                  "title": "Response List Notification History Api V1 Notifications History Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/analytics": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "summary": "Get Analytics",
        "operationId": "get_analytics_api_v1_analytics_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 365,
              "minimum": 7,
              "description": "Number of days for trends",
              "default": 30,
              "title": "Days"
            },
            "description": "Number of days for trends"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/learning": {
      "get": {
        "tags": [
          "Learning"
        ],
        "summary": "Get Learning Insights",
        "description": "Get comprehensive learning insights for the current user.\n\nReturns the user's learning profile, best item pairs, active insights,\nand suggested preference updates based on feedback history.",
        "operationId": "get_learning_insights_api_v1_learning_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LearningInsightsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/learning/recompute": {
      "post": {
        "tags": [
          "Learning"
        ],
        "summary": "Recompute Learning Profile",
        "description": "Force recomputation of the learning profile.\n\nThis analyzes all historical feedback to update learned preferences.\nUsually happens automatically, but can be triggered manually.",
        "operationId": "recompute_learning_profile_api_v1_learning_recompute_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LearningProfileResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/learning/generate-insights": {
      "post": {
        "tags": [
          "Learning"
        ],
        "summary": "Generate Insights",
        "description": "Generate new style insights based on learning data.\n\nCreates human-readable insights about the user's style patterns.",
        "operationId": "generate_insights_api_v1_learning_generate_insights_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/InsightResponse"
                  },
                  "type": "array",
                  "title": "Response Generate Insights Api V1 Learning Generate Insights Post"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v1/learning/insights/{insight_id}/acknowledge": {
      "post": {
        "tags": [
          "Learning"
        ],
        "summary": "Acknowledge Insight",
        "description": "Mark an insight as acknowledged/dismissed.",
        "operationId": "acknowledge_insight_api_v1_learning_insights__insight_id__acknowledge_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "insight_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Insight Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Acknowledge Insight Api V1 Learning Insights  Insight Id  Acknowledge Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/learning/item-pairs/{item_id}": {
      "get": {
        "tags": [
          "Learning"
        ],
        "summary": "Get Item Pair Suggestions",
        "description": "Get items that pair well with a specific item.\n\nBased on historical feedback, returns items that have been\npositively received when combined with the given item.",
        "operationId": "get_item_pair_suggestions_api_v1_learning_item_pairs__item_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 20,
              "minimum": 1,
              "default": 5,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "title": "Response Get Item Pair Suggestions Api V1 Learning Item Pairs  Item Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AIEndpoint": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Display name for this endpoint"
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Base URL for the AI API (e.g., http://localhost:11434/v1)"
          },
          "vision_model": {
            "type": "string",
            "title": "Vision Model",
            "description": "Model for image analysis",
            "default": "moondream"
          },
          "text_model": {
            "type": "string",
            "title": "Text Model",
            "description": "Model for text generation",
            "default": "phi3:mini"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "description": "Whether this endpoint is active",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "url"
        ],
        "title": "AIEndpoint"
      },
      "AcceptanceRateTrend": {
        "properties": {
          "period": {
            "type": "string",
            "title": "Period"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "accepted": {
            "type": "integer",
            "title": "Accepted"
          },
          "rejected": {
            "type": "integer",
            "title": "Rejected"
          },
          "rate": {
            "type": "number",
            "title": "Rate"
          }
        },
        "type": "object",
        "required": [
          "period",
          "total",
          "accepted",
          "rejected",
          "rate"
        ],
        "title": "AcceptanceRateTrend"
      },
      "AnalyticsResponse": {
        "properties": {
          "wardrobe": {
            "$ref": "#/components/schemas/WardrobeStats"
          },
          "color_distribution": {
            "items": {
              "$ref": "#/components/schemas/ColorDistribution"
            },
            "type": "array",
            "title": "Color Distribution"
          },
          "type_distribution": {
            "items": {
              "$ref": "#/components/schemas/TypeDistribution"
            },
            "type": "array",
            "title": "Type Distribution"
          },
          "most_worn": {
            "items": {
              "$ref": "#/components/schemas/WearStats"
            },
            "type": "array",
            "title": "Most Worn"
          },
          "least_worn": {
            "items": {
              "$ref": "#/components/schemas/WearStats"
            },
            "type": "array",
            "title": "Least Worn"
          },
          "never_worn": {
            "items": {
              "$ref": "#/components/schemas/WearStats"
            },
            "type": "array",
            "title": "Never Worn"
          },
          "acceptance_trend": {
            "items": {
              "$ref": "#/components/schemas/AcceptanceRateTrend"
            },
            "type": "array",
            "title": "Acceptance Trend"
          },
          "insights": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Insights"
          }
        },
        "type": "object",
        "required": [
          "wardrobe",
          "color_distribution",
          "type_distribution",
          "most_worn",
          "least_worn",
          "never_worn",
          "acceptance_trend",
          "insights"
        ],
        "title": "AnalyticsResponse"
      },
      "ArchiveRequest": {
        "properties": {
          "reason": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "type": "object",
        "title": "ArchiveRequest"
      },
      "AuthConfigOIDC": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "issuer_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuer Url"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          }
        },
        "type": "object",
        "required": [
          "enabled"
        ],
        "title": "AuthConfigOIDC"
      },
      "AuthConfigResponse": {
        "properties": {
          "oidc": {
            "$ref": "#/components/schemas/AuthConfigOIDC"
          },
          "dev_mode": {
            "type": "boolean",
            "title": "Dev Mode",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "oidc"
        ],
        "title": "AuthConfigResponse"
      },
      "AuthStatusResponse": {
        "properties": {
          "configured": {
            "type": "boolean",
            "title": "Configured"
          },
          "mode": {
            "type": "string",
            "title": "Mode"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          }
        },
        "type": "object",
        "required": [
          "configured",
          "mode"
        ],
        "title": "AuthStatusResponse"
      },
      "Body_add_item_image_api_v1_items__item_id__images_post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_add_item_image_api_v1_items__item_id__images_post"
      },
      "Body_bulk_create_items_api_v1_items_bulk_post": {
        "properties": {
          "images": {
            "items": {
              "type": "string",
              "contentMediaType": "application/octet-stream"
            },
            "type": "array",
            "title": "Images",
            "description": "Multiple image files to upload"
          },
          "skip_ai": {
            "type": "boolean",
            "title": "Skip Ai",
            "default": false
          },
          "upload_keys": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upload Keys",
            "description": "Optional per-file idempotency keys, same order/length as images. Used by the durable upload queue so a retried chunk cannot create a duplicate item for a file already accepted."
          }
        },
        "type": "object",
        "required": [
          "images"
        ],
        "title": "Body_bulk_create_items_api_v1_items_bulk_post"
      },
      "Body_create_item_api_v1_items_post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "brand": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "colors": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Colors"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "favorite": {
            "type": "boolean",
            "title": "Favorite",
            "default": false
          },
          "skip_ai": {
            "type": "boolean",
            "title": "Skip Ai",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_create_item_api_v1_items_post"
      },
      "Body_replace_item_image_api_v1_items__item_id__image_put": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_replace_item_image_api_v1_items__item_id__image_put"
      },
      "BulkAnalyzeRequest": {
        "properties": {
          "item_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Item Ids"
          },
          "select_all": {
            "type": "boolean",
            "title": "Select All",
            "default": false
          },
          "excluded_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excluded Ids"
          },
          "filters": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BulkFilters"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "BulkAnalyzeRequest"
      },
      "BulkAnalyzeResponse": {
        "properties": {
          "queued": {
            "type": "integer",
            "title": "Queued"
          },
          "failed": {
            "type": "integer",
            "title": "Failed"
          },
          "skipped": {
            "type": "integer",
            "title": "Skipped",
            "default": 0
          },
          "cooldown": {
            "type": "integer",
            "title": "Cooldown",
            "default": 0
          },
          "retry_after_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Retry After Seconds"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          }
        },
        "type": "object",
        "required": [
          "queued",
          "failed"
        ],
        "title": "BulkAnalyzeResponse"
      },
      "BulkDeleteOutfitsRequest": {
        "properties": {
          "outfit_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outfit Ids"
          },
          "select_all": {
            "type": "boolean",
            "title": "Select All",
            "default": false
          },
          "excluded_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excluded Ids"
          },
          "filters": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BulkOutfitFilters"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "BulkDeleteOutfitsRequest"
      },
      "BulkDeleteOutfitsResponse": {
        "properties": {
          "deleted": {
            "type": "integer",
            "title": "Deleted"
          },
          "failed": {
            "type": "integer",
            "title": "Failed"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          }
        },
        "type": "object",
        "required": [
          "deleted",
          "failed"
        ],
        "title": "BulkDeleteOutfitsResponse"
      },
      "BulkDeleteRequest": {
        "properties": {
          "item_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Item Ids"
          },
          "select_all": {
            "type": "boolean",
            "title": "Select All",
            "default": false
          },
          "excluded_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excluded Ids"
          },
          "filters": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BulkFilters"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "BulkDeleteRequest"
      },
      "BulkDeleteResponse": {
        "properties": {
          "deleted": {
            "type": "integer",
            "title": "Deleted"
          },
          "failed": {
            "type": "integer",
            "title": "Failed"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          }
        },
        "type": "object",
        "required": [
          "deleted",
          "failed"
        ],
        "title": "BulkDeleteResponse"
      },
      "BulkFilters": {
        "properties": {
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "search": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Search"
          },
          "is_archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Archived"
          }
        },
        "type": "object",
        "title": "BulkFilters"
      },
      "BulkOutfitFilters": {
        "properties": {
          "status_filter": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Filter"
          },
          "occasion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occasion"
          },
          "date_from": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date From"
          },
          "date_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date To"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "is_lookbook": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Lookbook"
          },
          "is_replacement": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Replacement"
          },
          "has_source_item": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Source Item"
          },
          "item_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Item Type"
          },
          "search": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Search"
          },
          "cloned_from_outfit_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cloned From Outfit Id"
          }
        },
        "type": "object",
        "title": "BulkOutfitFilters"
      },
      "BulkUploadResponse": {
        "properties": {
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "successful": {
            "type": "integer",
            "title": "Successful"
          },
          "failed": {
            "type": "integer",
            "title": "Failed"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/BulkUploadResult"
            },
            "type": "array",
            "title": "Results"
          }
        },
        "type": "object",
        "required": [
          "total",
          "successful",
          "failed",
          "results"
        ],
        "title": "BulkUploadResponse"
      },
      "BulkUploadResult": {
        "properties": {
          "filename": {
            "type": "string",
            "title": "Filename"
          },
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "item": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ItemResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "duplicate": {
            "type": "boolean",
            "title": "Duplicate",
            "default": false
          },
          "existing_item_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Existing Item Id"
          }
        },
        "type": "object",
        "required": [
          "filename",
          "success"
        ],
        "title": "BulkUploadResult"
      },
      "CloneToLookbookRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CloneToLookbookRequest"
      },
      "ColorDistribution": {
        "properties": {
          "color": {
            "type": "string",
            "title": "Color"
          },
          "count": {
            "type": "integer",
            "title": "Count"
          },
          "percentage": {
            "type": "number",
            "title": "Percentage"
          }
        },
        "type": "object",
        "required": [
          "color",
          "count",
          "percentage"
        ],
        "title": "ColorDistribution"
      },
      "FamilyCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "FamilyCreate"
      },
      "FamilyCreateResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "invite_code": {
            "type": "string",
            "title": "Invite Code"
          },
          "role": {
            "type": "string",
            "title": "Role",
            "default": "admin"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "invite_code"
        ],
        "title": "FamilyCreateResponse"
      },
      "FamilyMember": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_name",
          "email",
          "role",
          "created_at"
        ],
        "title": "FamilyMember"
      },
      "FamilyRatingRequest": {
        "properties": {
          "rating": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Rating",
            "description": "Rating 1-5"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          }
        },
        "type": "object",
        "required": [
          "rating"
        ],
        "title": "FamilyRatingRequest"
      },
      "FamilyRatingResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id"
          },
          "user_display_name": {
            "type": "string",
            "title": "User Display Name"
          },
          "user_avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Avatar Url"
          },
          "rating": {
            "type": "integer",
            "title": "Rating"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "user_display_name",
          "rating",
          "created_at"
        ],
        "title": "FamilyRatingResponse"
      },
      "FamilyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "invite_code": {
            "type": "string",
            "title": "Invite Code"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/FamilyMember"
            },
            "type": "array",
            "title": "Members",
            "default": []
          },
          "pending_invites": {
            "items": {
              "$ref": "#/components/schemas/PendingInvite"
            },
            "type": "array",
            "title": "Pending Invites",
            "default": []
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "invite_code",
          "created_at"
        ],
        "title": "FamilyResponse"
      },
      "FamilyUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "type": "object",
        "title": "FamilyUpdate"
      },
      "FeedbackRequest": {
        "properties": {
          "accepted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted",
            "description": "Whether outfit was accepted"
          },
          "rating": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating",
            "description": "Overall rating 1-5"
          },
          "comfort_rating": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Comfort Rating",
            "description": "Comfort rating 1-5"
          },
          "style_rating": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Rating",
            "description": "Style rating 1-5"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment",
            "description": "Optional comment"
          },
          "worn": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn",
            "description": "Whether the outfit was worn"
          },
          "worn_with_modifications": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn With Modifications",
            "description": "If worn, whether modifications were made"
          },
          "modification_notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Modification Notes"
          },
          "actually_worn": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actually Worn",
            "description": "Did user actually wear this recommendation?"
          },
          "wore_instead_items": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wore Instead Items",
            "description": "Item IDs user wore instead of recommendation"
          }
        },
        "type": "object",
        "title": "FeedbackRequest"
      },
      "FeedbackResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "outfit_id": {
            "type": "string",
            "format": "uuid",
            "title": "Outfit Id"
          },
          "accepted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted"
          },
          "rating": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "comfort_rating": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comfort Rating"
          },
          "style_rating": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Rating"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn At"
          },
          "worn_with_modifications": {
            "type": "boolean",
            "title": "Worn With Modifications",
            "default": false
          },
          "modification_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Modification Notes"
          },
          "actually_worn": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actually Worn"
          },
          "wore_instead_items": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wore Instead Items"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "outfit_id",
          "created_at"
        ],
        "title": "FeedbackResponse"
      },
      "ForecastDayResponse": {
        "properties": {
          "date": {
            "type": "string",
            "title": "Date",
            "description": "Date in YYYY-MM-DD format"
          },
          "temp_min": {
            "type": "number",
            "title": "Temp Min",
            "description": "Minimum temperature in Celsius"
          },
          "temp_max": {
            "type": "number",
            "title": "Temp Max",
            "description": "Maximum temperature in Celsius"
          },
          "precipitation_chance": {
            "type": "integer",
            "title": "Precipitation Chance",
            "description": "Maximum precipitation chance percentage"
          },
          "condition": {
            "type": "string",
            "title": "Condition",
            "description": "Weather condition description"
          },
          "condition_code": {
            "type": "integer",
            "title": "Condition Code",
            "description": "WMO weather code"
          }
        },
        "type": "object",
        "required": [
          "date",
          "temp_min",
          "temp_max",
          "precipitation_chance",
          "condition",
          "condition_code"
        ],
        "title": "ForecastDayResponse"
      },
      "ForecastResponse": {
        "properties": {
          "latitude": {
            "type": "number",
            "title": "Latitude"
          },
          "longitude": {
            "type": "number",
            "title": "Longitude"
          },
          "forecast": {
            "items": {
              "$ref": "#/components/schemas/ForecastDayResponse"
            },
            "type": "array",
            "title": "Forecast"
          }
        },
        "type": "object",
        "required": [
          "latitude",
          "longitude",
          "forecast"
        ],
        "title": "ForecastResponse"
      },
      "GeneratePairingsRequest": {
        "properties": {
          "num_pairings": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Num Pairings",
            "description": "Number of pairings to generate",
            "default": 3
          }
        },
        "type": "object",
        "title": "GeneratePairingsRequest"
      },
      "GeneratePairingsResponse": {
        "properties": {
          "generated": {
            "type": "integer",
            "title": "Generated"
          },
          "pairings": {
            "items": {
              "$ref": "#/components/schemas/PairingResponse"
            },
            "type": "array",
            "title": "Pairings"
          }
        },
        "type": "object",
        "required": [
          "generated",
          "pairings"
        ],
        "title": "GeneratePairingsResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "InsightResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "category": {
            "type": "string",
            "title": "Category"
          },
          "insight_type": {
            "type": "string",
            "title": "Insight Type"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "description": {
            "type": "string",
            "title": "Description"
          },
          "confidence": {
            "type": "number",
            "title": "Confidence"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "category",
          "insight_type",
          "title",
          "description",
          "confidence",
          "created_at"
        ],
        "title": "InsightResponse",
        "description": "Style insight."
      },
      "InviteCodeResponse": {
        "properties": {
          "invite_code": {
            "type": "string",
            "title": "Invite Code"
          }
        },
        "type": "object",
        "required": [
          "invite_code"
        ],
        "title": "InviteCodeResponse"
      },
      "InviteMemberRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email"
          },
          "role": {
            "type": "string",
            "pattern": "^(admin|member)$",
            "title": "Role",
            "default": "member"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "InviteMemberRequest"
      },
      "InviteResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "expires_at"
        ],
        "title": "InviteResponse"
      },
      "ItemImageResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "item_id": {
            "type": "string",
            "format": "uuid",
            "title": "Item Id"
          },
          "image_path": {
            "type": "string",
            "title": "Image Path"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "medium_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Medium Path"
          },
          "position": {
            "type": "integer",
            "title": "Position"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "readOnly": true
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          },
          "medium_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Medium Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "item_id",
          "image_path",
          "position",
          "created_at",
          "image_url",
          "thumbnail_url",
          "medium_url"
        ],
        "title": "ItemImageResponse"
      },
      "ItemListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ItemResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "page_size": {
            "type": "integer",
            "title": "Page Size"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "has_more"
        ],
        "title": "ItemListResponse"
      },
      "ItemPairResponse": {
        "properties": {
          "item1": {
            "additionalProperties": true,
            "type": "object",
            "title": "Item1"
          },
          "item2": {
            "additionalProperties": true,
            "type": "object",
            "title": "Item2"
          },
          "compatibility_score": {
            "type": "number",
            "title": "Compatibility Score"
          },
          "times_paired": {
            "type": "integer",
            "title": "Times Paired"
          },
          "times_accepted": {
            "type": "integer",
            "title": "Times Accepted"
          }
        },
        "type": "object",
        "required": [
          "item1",
          "item2",
          "compatibility_score",
          "times_paired",
          "times_accepted"
        ],
        "title": "ItemPairResponse",
        "description": "Item pair that works well together."
      },
      "ItemResponse": {
        "properties": {
          "type": {
            "type": "string",
            "maxLength": 50,
            "title": "Type",
            "default": "unknown"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "brand": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "purchase_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchase Date"
          },
          "purchase_price": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchase Price"
          },
          "favorite": {
            "type": "boolean",
            "title": "Favorite",
            "default": false
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id"
          },
          "image_path": {
            "type": "string",
            "title": "Image Path"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "medium_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Medium Path"
          },
          "original_image_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Original Image Path"
          },
          "tags": {
            "additionalProperties": true,
            "type": "object",
            "title": "Tags"
          },
          "colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Colors"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "pattern": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pattern"
          },
          "material": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Material"
          },
          "style": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Style"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "season": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Season"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "ai_processed": {
            "type": "boolean",
            "title": "Ai Processed",
            "default": false
          },
          "ai_confidence": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ai Confidence"
          },
          "ai_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ai Description"
          },
          "ai_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ai Error"
          },
          "ai_started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ai Started At"
          },
          "tagging_status": {
            "type": "string",
            "title": "Tagging Status",
            "default": "pending"
          },
          "tagged_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tagged By"
          },
          "tagged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tagged At"
          },
          "wear_count": {
            "type": "integer",
            "title": "Wear Count",
            "default": 0
          },
          "last_worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Worn At"
          },
          "last_suggested_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Suggested At"
          },
          "suggestion_count": {
            "type": "integer",
            "title": "Suggestion Count",
            "default": 0
          },
          "acceptance_count": {
            "type": "integer",
            "title": "Acceptance Count",
            "default": 0
          },
          "wears_since_wash": {
            "type": "integer",
            "title": "Wears Since Wash",
            "default": 0
          },
          "last_washed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Washed At"
          },
          "wash_interval": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wash Interval"
          },
          "needs_wash": {
            "type": "boolean",
            "title": "Needs Wash",
            "default": false
          },
          "additional_images": {
            "items": {
              "$ref": "#/components/schemas/ItemImageResponse"
            },
            "type": "array",
            "title": "Additional Images"
          },
          "is_archived": {
            "type": "boolean",
            "title": "Is Archived",
            "default": false
          },
          "archived_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archived At"
          },
          "archive_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archive Reason"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "readOnly": true
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          },
          "medium_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Medium Url",
            "readOnly": true
          },
          "effective_wash_interval": {
            "type": "integer",
            "title": "Effective Wash Interval",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "image_path",
          "status",
          "created_at",
          "updated_at",
          "image_url",
          "thumbnail_url",
          "medium_url",
          "effective_wash_interval"
        ],
        "title": "ItemResponse"
      },
      "ItemTags": {
        "properties": {
          "colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Colors"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "pattern": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pattern"
          },
          "material": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Material"
          },
          "style": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Style"
          },
          "season": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "fit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fit"
          }
        },
        "type": "object",
        "title": "ItemTags"
      },
      "ItemUpdate": {
        "properties": {
          "type": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "brand": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "purchase_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchase Date"
          },
          "purchase_price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchase Price"
          },
          "favorite": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Favorite"
          },
          "tags": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ItemTags"
              },
              {
                "type": "null"
              }
            ]
          },
          "colors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Colors"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "wash_interval": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wash Interval"
          }
        },
        "type": "object",
        "title": "ItemUpdate"
      },
      "JoinByTokenRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Token"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "JoinByTokenRequest"
      },
      "JoinFamilyRequest": {
        "properties": {
          "invite_code": {
            "type": "string",
            "maxLength": 20,
            "minLength": 1,
            "title": "Invite Code"
          }
        },
        "type": "object",
        "required": [
          "invite_code"
        ],
        "title": "JoinFamilyRequest"
      },
      "JoinFamilyResponse": {
        "properties": {
          "family_id": {
            "type": "string",
            "format": "uuid",
            "title": "Family Id"
          },
          "family_name": {
            "type": "string",
            "title": "Family Name"
          },
          "role": {
            "type": "string",
            "title": "Role",
            "default": "member"
          }
        },
        "type": "object",
        "required": [
          "family_id",
          "family_name"
        ],
        "title": "JoinFamilyResponse"
      },
      "LearnedColorScore": {
        "properties": {
          "color": {
            "type": "string",
            "title": "Color"
          },
          "score": {
            "type": "number",
            "title": "Score"
          },
          "interpretation": {
            "type": "string",
            "title": "Interpretation"
          }
        },
        "type": "object",
        "required": [
          "color",
          "score",
          "interpretation"
        ],
        "title": "LearnedColorScore",
        "description": "Color preference score."
      },
      "LearnedStyleScore": {
        "properties": {
          "style": {
            "type": "string",
            "title": "Style"
          },
          "score": {
            "type": "number",
            "title": "Score"
          }
        },
        "type": "object",
        "required": [
          "style",
          "score"
        ],
        "title": "LearnedStyleScore",
        "description": "Style preference score."
      },
      "LearningInsightsResponse": {
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/LearningProfileResponse"
          },
          "best_pairs": {
            "items": {
              "$ref": "#/components/schemas/ItemPairResponse"
            },
            "type": "array",
            "title": "Best Pairs"
          },
          "insights": {
            "items": {
              "$ref": "#/components/schemas/InsightResponse"
            },
            "type": "array",
            "title": "Insights"
          },
          "preference_suggestions": {
            "additionalProperties": true,
            "type": "object",
            "title": "Preference Suggestions"
          }
        },
        "type": "object",
        "required": [
          "profile",
          "best_pairs",
          "insights",
          "preference_suggestions"
        ],
        "title": "LearningInsightsResponse",
        "description": "Learning insights response."
      },
      "LearningProfileResponse": {
        "properties": {
          "has_learning_data": {
            "type": "boolean",
            "title": "Has Learning Data"
          },
          "feedback_count": {
            "type": "integer",
            "title": "Feedback Count"
          },
          "outfits_rated": {
            "type": "integer",
            "title": "Outfits Rated"
          },
          "overall_acceptance_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Overall Acceptance Rate"
          },
          "average_rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Average Rating"
          },
          "average_comfort_rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Average Comfort Rating"
          },
          "average_style_rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Average Style Rating"
          },
          "color_preferences": {
            "items": {
              "$ref": "#/components/schemas/LearnedColorScore"
            },
            "type": "array",
            "title": "Color Preferences"
          },
          "style_preferences": {
            "items": {
              "$ref": "#/components/schemas/LearnedStyleScore"
            },
            "type": "array",
            "title": "Style Preferences"
          },
          "occasion_patterns": {
            "items": {
              "$ref": "#/components/schemas/OccasionPattern"
            },
            "type": "array",
            "title": "Occasion Patterns"
          },
          "weather_preferences": {
            "items": {
              "$ref": "#/components/schemas/WeatherPreference"
            },
            "type": "array",
            "title": "Weather Preferences"
          },
          "last_computed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Computed At"
          }
        },
        "type": "object",
        "required": [
          "has_learning_data",
          "feedback_count",
          "outfits_rated",
          "color_preferences",
          "style_preferences",
          "occasion_patterns",
          "weather_preferences"
        ],
        "title": "LearningProfileResponse",
        "description": "User's learning profile."
      },
      "LogWashRequest": {
        "properties": {
          "washed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Washed At"
          },
          "method": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Method"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "title": "LogWashRequest"
      },
      "LogWearRequest": {
        "properties": {
          "worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn At"
          },
          "occasion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occasion"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "title": "LogWearRequest"
      },
      "MessageResponse": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "MessageResponse"
      },
      "NotificationResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id"
          },
          "outfit_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outfit Id"
          },
          "channel": {
            "type": "string",
            "title": "Channel"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "attempts": {
            "type": "integer",
            "title": "Attempts"
          },
          "sent_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sent At"
          },
          "delivered_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivered At"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "outfit_id",
          "channel",
          "status",
          "attempts",
          "sent_at",
          "delivered_at",
          "error_message",
          "created_at"
        ],
        "title": "NotificationResponse"
      },
      "NotificationSettingsCreate": {
        "properties": {
          "channel": {
            "type": "string",
            "enum": [
              "ntfy",
              "mattermost",
              "email",
              "expo_push"
            ],
            "title": "Channel"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          },
          "priority": {
            "type": "integer",
            "title": "Priority",
            "default": 1
          },
          "config": {
            "additionalProperties": true,
            "type": "object",
            "title": "Config"
          }
        },
        "type": "object",
        "required": [
          "channel",
          "config"
        ],
        "title": "NotificationSettingsCreate"
      },
      "NotificationSettingsResponse": {
        "properties": {
          "channel": {
            "type": "string",
            "enum": [
              "ntfy",
              "mattermost",
              "email",
              "expo_push"
            ],
            "title": "Channel"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          },
          "priority": {
            "type": "integer",
            "title": "Priority",
            "default": 1
          },
          "config": {
            "additionalProperties": true,
            "type": "object",
            "title": "Config"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "channel",
          "config",
          "id",
          "user_id",
          "created_at",
          "updated_at"
        ],
        "title": "NotificationSettingsResponse"
      },
      "NotificationSettingsUpdate": {
        "properties": {
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Config"
          }
        },
        "type": "object",
        "title": "NotificationSettingsUpdate"
      },
      "OccasionPattern": {
        "properties": {
          "occasion": {
            "type": "string",
            "title": "Occasion"
          },
          "preferred_colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Preferred Colors"
          },
          "success_rate": {
            "type": "number",
            "title": "Success Rate"
          }
        },
        "type": "object",
        "required": [
          "occasion",
          "preferred_colors",
          "success_rate"
        ],
        "title": "OccasionPattern",
        "description": "Learned occasion pattern."
      },
      "OnboardingCompleteResponse": {
        "properties": {
          "onboarding_completed": {
            "type": "boolean",
            "title": "Onboarding Completed"
          }
        },
        "type": "object",
        "required": [
          "onboarding_completed"
        ],
        "title": "OnboardingCompleteResponse"
      },
      "OutfitItemResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Colors",
            "default": []
          },
          "image_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Path"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "layer_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Layer Type"
          },
          "position": {
            "type": "integer",
            "title": "Position"
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url",
            "readOnly": true
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "type",
          "position",
          "image_url",
          "thumbnail_url"
        ],
        "title": "OutfitItemResponse"
      },
      "OutfitListResponse": {
        "properties": {
          "outfits": {
            "items": {
              "$ref": "#/components/schemas/OutfitResponse"
            },
            "type": "array",
            "title": "Outfits"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "page_size": {
            "type": "integer",
            "title": "Page Size"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More"
          }
        },
        "type": "object",
        "required": [
          "outfits",
          "total",
          "page",
          "page_size",
          "has_more"
        ],
        "title": "OutfitListResponse"
      },
      "OutfitResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "occasion": {
            "type": "string",
            "title": "Occasion"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "replaces_outfit_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Replaces Outfit Id"
          },
          "cloned_from_outfit_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cloned From Outfit Id"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "reasoning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reasoning"
          },
          "style_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Notes"
          },
          "season": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "palette": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Palette"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights"
          },
          "weather": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weather"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/OutfitItemResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "feedback": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/app__api__outfits__FeedbackSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "family_ratings": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FamilyRatingResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Ratings"
          },
          "family_rating_average": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Rating Average"
          },
          "family_rating_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Rating Count"
          },
          "is_starter_suggestion": {
            "type": "boolean",
            "title": "Is Starter Suggestion",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "occasion",
          "status",
          "source",
          "items",
          "created_at"
        ],
        "title": "OutfitResponse"
      },
      "PairingCreateRequest": {
        "properties": {
          "season": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "palette": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "maxItems": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Palette",
            "description": "Dominant outfit colors, most prominent first"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Items",
            "description": "Partner items to pair with the source item"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For",
            "description": "Defaults to the user's current date"
          },
          "reasoning": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Reasoning"
          },
          "style_notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Notes"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items"
        ],
        "title": "PairingCreateRequest"
      },
      "PairingItemResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Colors",
            "default": []
          },
          "image_path": {
            "type": "string",
            "title": "Image Path"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "layer_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Layer Type"
          },
          "position": {
            "type": "integer",
            "title": "Position"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "readOnly": true
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "type",
          "image_path",
          "position",
          "image_url",
          "thumbnail_url"
        ],
        "title": "PairingItemResponse"
      },
      "PairingListResponse": {
        "properties": {
          "pairings": {
            "items": {
              "$ref": "#/components/schemas/PairingResponse"
            },
            "type": "array",
            "title": "Pairings"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "page_size": {
            "type": "integer",
            "title": "Page Size"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More"
          }
        },
        "type": "object",
        "required": [
          "pairings",
          "total",
          "page",
          "page_size",
          "has_more"
        ],
        "title": "PairingListResponse"
      },
      "PairingResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "occasion": {
            "type": "string",
            "title": "Occasion"
          },
          "scheduled_for": {
            "type": "string",
            "format": "date",
            "title": "Scheduled For"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "reasoning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reasoning"
          },
          "style_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Notes"
          },
          "season": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "palette": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Palette"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights"
          },
          "source_item": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceItemResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PairingItemResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "feedback": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/app__api__pairings__FeedbackSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "family_ratings": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FamilyRatingResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Ratings"
          },
          "family_rating_average": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Rating Average"
          },
          "family_rating_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Rating Count"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "occasion",
          "scheduled_for",
          "status",
          "source",
          "items",
          "created_at"
        ],
        "title": "PairingResponse"
      },
      "PatchOutfitRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "items": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array",
                "maxItems": 20,
                "minItems": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Items"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "PatchOutfitRequest"
      },
      "PendingInvite": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "created_at",
          "expires_at"
        ],
        "title": "PendingInvite"
      },
      "PreferenceResponse": {
        "properties": {
          "color_favorites": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Color Favorites",
            "description": "Favorite colors"
          },
          "color_avoid": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Color Avoid",
            "description": "Colors to avoid"
          },
          "style_profile": {
            "$ref": "#/components/schemas/StyleProfile"
          },
          "default_occasion": {
            "type": "string",
            "title": "Default Occasion",
            "description": "Default occasion for recommendations",
            "default": "casual"
          },
          "temperature_unit": {
            "type": "string",
            "pattern": "^(celsius|fahrenheit)$",
            "title": "Temperature Unit",
            "description": "Preferred temperature display unit",
            "default": "celsius"
          },
          "temperature_sensitivity": {
            "type": "string",
            "pattern": "^(low|normal|high)$",
            "title": "Temperature Sensitivity",
            "description": "Temperature sensitivity level",
            "default": "normal"
          },
          "cold_threshold": {
            "type": "integer",
            "maximum": 30.0,
            "minimum": -20.0,
            "title": "Cold Threshold",
            "description": "Temperature (C) considered cold",
            "default": 10
          },
          "hot_threshold": {
            "type": "integer",
            "maximum": 45.0,
            "minimum": 10.0,
            "title": "Hot Threshold",
            "description": "Temperature (C) considered hot",
            "default": 25
          },
          "layering_preference": {
            "type": "string",
            "pattern": "^(minimal|moderate|heavy)$",
            "title": "Layering Preference",
            "description": "Layering preference",
            "default": "moderate"
          },
          "avoid_repeat_days": {
            "type": "integer",
            "maximum": 30.0,
            "minimum": 0.0,
            "title": "Avoid Repeat Days",
            "description": "Days before repeating items",
            "default": 7
          },
          "prefer_underused_items": {
            "type": "boolean",
            "title": "Prefer Underused Items",
            "description": "Prioritize less worn items",
            "default": true
          },
          "variety_level": {
            "type": "string",
            "pattern": "^(low|moderate|high)$",
            "title": "Variety Level",
            "description": "Outfit variety preference",
            "default": "moderate"
          },
          "ai_endpoints": {
            "items": {
              "$ref": "#/components/schemas/AIEndpoint"
            },
            "type": "array",
            "title": "Ai Endpoints",
            "description": "AI endpoints in priority order (first available is used)"
          }
        },
        "type": "object",
        "title": "PreferenceResponse"
      },
      "PreferenceUpdate": {
        "properties": {
          "color_favorites": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color Favorites"
          },
          "color_avoid": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color Avoid"
          },
          "style_profile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StyleProfile"
              },
              {
                "type": "null"
              }
            ]
          },
          "default_occasion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Occasion"
          },
          "temperature_unit": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(celsius|fahrenheit)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Temperature Unit"
          },
          "temperature_sensitivity": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(low|normal|high)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Temperature Sensitivity"
          },
          "cold_threshold": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 30.0,
                "minimum": -20.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Cold Threshold"
          },
          "hot_threshold": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 45.0,
                "minimum": 10.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Hot Threshold"
          },
          "layering_preference": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(minimal|moderate|heavy)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Layering Preference"
          },
          "avoid_repeat_days": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 30.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Avoid Repeat Days"
          },
          "prefer_underused_items": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prefer Underused Items"
          },
          "variety_level": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(low|moderate|high)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Variety Level"
          },
          "ai_endpoints": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/AIEndpoint"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ai Endpoints"
          }
        },
        "type": "object",
        "title": "PreferenceUpdate"
      },
      "PushTokenRequest": {
        "properties": {
          "push_token": {
            "type": "string",
            "title": "Push Token"
          }
        },
        "type": "object",
        "required": [
          "push_token"
        ],
        "title": "PushTokenRequest"
      },
      "RemoveBackgroundRequest": {
        "properties": {
          "bg_color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Bg Color",
            "description": "Hex color for the replacement background",
            "default": "#FFFFFF"
          }
        },
        "type": "object",
        "title": "RemoveBackgroundRequest"
      },
      "ReorderImagesRequest": {
        "properties": {
          "image_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Image Ids"
          }
        },
        "type": "object",
        "required": [
          "image_ids"
        ],
        "title": "ReorderImagesRequest"
      },
      "ScheduleCreate": {
        "properties": {
          "day_of_week": {
            "type": "integer",
            "title": "Day Of Week"
          },
          "notification_time": {
            "type": "string",
            "title": "Notification Time"
          },
          "occasion": {
            "type": "string",
            "title": "Occasion",
            "default": "casual"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          },
          "notify_day_before": {
            "type": "boolean",
            "title": "Notify Day Before",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "day_of_week",
          "notification_time"
        ],
        "title": "ScheduleCreate"
      },
      "ScheduleResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id"
          },
          "day_of_week": {
            "type": "integer",
            "title": "Day Of Week"
          },
          "notification_time": {
            "type": "string",
            "title": "Notification Time"
          },
          "occasion": {
            "type": "string",
            "title": "Occasion"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "notify_day_before": {
            "type": "boolean",
            "title": "Notify Day Before"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "user_id",
          "day_of_week",
          "notification_time",
          "occasion",
          "enabled",
          "notify_day_before",
          "created_at",
          "updated_at"
        ],
        "title": "ScheduleResponse"
      },
      "ScheduleUpdate": {
        "properties": {
          "day_of_week": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Week"
          },
          "notification_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notification Time"
          },
          "occasion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occasion"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "notify_day_before": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notify Day Before"
          }
        },
        "type": "object",
        "title": "ScheduleUpdate"
      },
      "SourceItemResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "subtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtype"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "image_path": {
            "type": "string",
            "title": "Image Path"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "readOnly": true
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "type",
          "image_path",
          "image_url",
          "thumbnail_url"
        ],
        "title": "SourceItemResponse"
      },
      "StudioCreateRequest": {
        "properties": {
          "season": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "palette": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "maxItems": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Palette",
            "description": "Dominant outfit colors, most prominent first"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Items"
          },
          "occasion": {
            "type": "string",
            "maxLength": 50,
            "title": "Occasion"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          },
          "mark_worn": {
            "type": "boolean",
            "title": "Mark Worn",
            "default": false
          },
          "source_item_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Item Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "occasion"
        ],
        "title": "StudioCreateRequest"
      },
      "StyleProfile": {
        "properties": {
          "casual": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Casual",
            "description": "Casual style preference 0-100",
            "default": 50
          },
          "formal": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Formal",
            "description": "Formal style preference 0-100",
            "default": 50
          },
          "sporty": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Sporty",
            "description": "Sporty style preference 0-100",
            "default": 50
          },
          "minimalist": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Minimalist",
            "description": "Minimalist style preference 0-100",
            "default": 50
          },
          "bold": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Bold",
            "description": "Bold/statement style preference 0-100",
            "default": 50
          }
        },
        "type": "object",
        "title": "StyleProfile"
      },
      "SuggestRequest": {
        "properties": {
          "occasion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occasion"
          },
          "time_of_day": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "morning",
                  "afternoon",
                  "evening",
                  "night",
                  "full day"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Time Of Day"
          },
          "weather_override": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WeatherOverrideRequest"
              },
              {
                "type": "null"
              }
            ]
          },
          "exclude_items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Exclude Items",
            "description": "Items to exclude"
          },
          "include_items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Include Items",
            "description": "Items to include"
          }
        },
        "type": "object",
        "title": "SuggestRequest"
      },
      "SuggestionCreateRequest": {
        "properties": {
          "season": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Season"
          },
          "formality": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Formality"
          },
          "palette": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "maxItems": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Palette",
            "description": "Dominant outfit colors, most prominent first"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Items"
          },
          "occasion": {
            "type": "string",
            "maxLength": 50,
            "title": "Occasion"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For",
            "description": "Defaults to the user's current date"
          },
          "reasoning": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Reasoning"
          },
          "style_notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Notes"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "occasion"
        ],
        "title": "SuggestionCreateRequest"
      },
      "TaggingProgressResponse": {
        "properties": {
          "processing": {
            "type": "integer",
            "title": "Processing"
          },
          "queued": {
            "type": "integer",
            "title": "Queued"
          },
          "analyzing": {
            "type": "integer",
            "title": "Analyzing"
          },
          "failed": {
            "type": "integer",
            "title": "Failed"
          },
          "completed": {
            "type": "integer",
            "title": "Completed"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "type": "object",
        "required": [
          "processing",
          "queued",
          "analyzing",
          "failed",
          "completed",
          "total"
        ],
        "title": "TaggingProgressResponse"
      },
      "TestNotificationResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "success",
          "message"
        ],
        "title": "TestNotificationResponse"
      },
      "TypeDistribution": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type"
          },
          "count": {
            "type": "integer",
            "title": "Count"
          },
          "percentage": {
            "type": "number",
            "title": "Percentage"
          }
        },
        "type": "object",
        "required": [
          "type",
          "count",
          "percentage"
        ],
        "title": "TypeDistribution"
      },
      "UpdateMemberRoleRequest": {
        "properties": {
          "role": {
            "type": "string",
            "pattern": "^(admin|member)$",
            "title": "Role"
          }
        },
        "type": "object",
        "required": [
          "role"
        ],
        "title": "UpdateMemberRoleRequest"
      },
      "UserProfileResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "locale": {
            "type": "string",
            "title": "Locale"
          },
          "location_lat": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lat"
          },
          "location_lon": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lon"
          },
          "location_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Name"
          },
          "family_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Id"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "onboarding_completed": {
            "type": "boolean",
            "title": "Onboarding Completed"
          },
          "body_measurements": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Measurements"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "display_name",
          "timezone",
          "locale",
          "role",
          "onboarding_completed"
        ],
        "title": "UserProfileResponse"
      },
      "UserProfileUpdate": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "locale": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locale"
          },
          "location_lat": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lat"
          },
          "location_lon": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lon"
          },
          "location_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Name"
          },
          "body_measurements": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Measurements"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "UserProfileUpdate"
      },
      "UserResponse": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email"
          },
          "display_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "timezone": {
            "type": "string",
            "maxLength": 50,
            "title": "Timezone",
            "default": "UTC"
          },
          "locale": {
            "type": "string",
            "maxLength": 10,
            "title": "Locale",
            "default": "en"
          },
          "location_lat": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lat"
          },
          "location_lon": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Lon"
          },
          "location_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Name"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "external_id": {
            "type": "string",
            "title": "External Id"
          },
          "family_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Family Id"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active"
          },
          "onboarding_completed": {
            "type": "boolean",
            "title": "Onboarding Completed"
          },
          "last_login_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Login At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "email",
          "display_name",
          "id",
          "external_id",
          "role",
          "is_active",
          "onboarding_completed",
          "created_at",
          "updated_at"
        ],
        "title": "UserResponse"
      },
      "UserSyncRequest": {
        "properties": {
          "external_id": {
            "type": "string",
            "title": "External Id",
            "description": "Subject ID from OIDC provider"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "description": "Email address; derived from ID token when omitted"
          },
          "display_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "id_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id Token",
            "description": "OIDC ID token for verification (required when OIDC is configured)"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider",
            "description": "Auth provider (e.g. 'oidc'), omit for default"
          }
        },
        "type": "object",
        "required": [
          "external_id",
          "display_name"
        ],
        "title": "UserSyncRequest"
      },
      "UserSyncResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "is_new_user": {
            "type": "boolean",
            "title": "Is New User"
          },
          "onboarding_completed": {
            "type": "boolean",
            "title": "Onboarding Completed"
          },
          "access_token": {
            "type": "string",
            "title": "Access Token",
            "description": "JWT token for API authentication"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "display_name",
          "is_new_user",
          "onboarding_completed",
          "access_token"
        ],
        "title": "UserSyncResponse"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "WardrobeStats": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items"
          },
          "items_by_status": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Items By Status"
          },
          "total_outfits": {
            "type": "integer",
            "title": "Total Outfits"
          },
          "outfits_this_week": {
            "type": "integer",
            "title": "Outfits This Week"
          },
          "outfits_this_month": {
            "type": "integer",
            "title": "Outfits This Month"
          },
          "acceptance_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acceptance Rate"
          },
          "average_rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Average Rating"
          },
          "total_wears": {
            "type": "integer",
            "title": "Total Wears"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "items_by_status",
          "total_outfits",
          "outfits_this_week",
          "outfits_this_month",
          "acceptance_rate",
          "average_rating",
          "total_wears"
        ],
        "title": "WardrobeStats"
      },
      "WashHistoryResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "item_id": {
            "type": "string",
            "format": "uuid",
            "title": "Item Id"
          },
          "washed_at": {
            "type": "string",
            "format": "date",
            "title": "Washed At"
          },
          "method": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Method"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "item_id",
          "washed_at",
          "created_at"
        ],
        "title": "WashHistoryResponse"
      },
      "WearStats": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "wear_count": {
            "type": "integer",
            "title": "Wear Count"
          },
          "last_worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Worn At"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "type",
          "primary_color",
          "thumbnail_path",
          "wear_count",
          "last_worn_at",
          "thumbnail_url"
        ],
        "title": "WearStats"
      },
      "WearTodayRequest": {
        "properties": {
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "WearTodayRequest"
      },
      "WeatherOverrideRequest": {
        "properties": {
          "temperature": {
            "type": "number",
            "title": "Temperature",
            "description": "Temperature in Celsius"
          },
          "feels_like": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Feels Like",
            "description": "Feels like temperature"
          },
          "condition": {
            "type": "string",
            "title": "Condition",
            "description": "Weather condition",
            "default": "unknown"
          },
          "precipitation_chance": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Precipitation Chance",
            "default": 0
          },
          "humidity": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Humidity",
            "default": 50
          }
        },
        "type": "object",
        "required": [
          "temperature"
        ],
        "title": "WeatherOverrideRequest"
      },
      "WeatherPreference": {
        "properties": {
          "weather_type": {
            "type": "string",
            "title": "Weather Type"
          },
          "preferred_layers": {
            "type": "number",
            "title": "Preferred Layers"
          },
          "success_rate": {
            "type": "number",
            "title": "Success Rate"
          }
        },
        "type": "object",
        "required": [
          "weather_type",
          "preferred_layers",
          "success_rate"
        ],
        "title": "WeatherPreference",
        "description": "Learned weather preference."
      },
      "WeatherResponse": {
        "properties": {
          "temperature": {
            "type": "number",
            "title": "Temperature",
            "description": "Temperature in Celsius"
          },
          "feels_like": {
            "type": "number",
            "title": "Feels Like",
            "description": "Apparent temperature in Celsius"
          },
          "humidity": {
            "type": "integer",
            "title": "Humidity",
            "description": "Relative humidity percentage"
          },
          "precipitation_chance": {
            "type": "integer",
            "title": "Precipitation Chance",
            "description": "Chance of precipitation percentage"
          },
          "precipitation_mm": {
            "type": "number",
            "title": "Precipitation Mm",
            "description": "Current precipitation in mm"
          },
          "wind_speed": {
            "type": "number",
            "title": "Wind Speed",
            "description": "Wind speed in km/h"
          },
          "condition": {
            "type": "string",
            "title": "Condition",
            "description": "Weather condition description"
          },
          "condition_code": {
            "type": "integer",
            "title": "Condition Code",
            "description": "WMO weather code"
          },
          "is_day": {
            "type": "boolean",
            "title": "Is Day",
            "description": "Whether it's daytime"
          },
          "uv_index": {
            "type": "number",
            "title": "Uv Index",
            "description": "UV index"
          },
          "timestamp": {
            "type": "string",
            "title": "Timestamp",
            "description": "Timestamp of weather data"
          }
        },
        "type": "object",
        "required": [
          "temperature",
          "feels_like",
          "humidity",
          "precipitation_chance",
          "precipitation_mm",
          "wind_speed",
          "condition",
          "condition_code",
          "is_day",
          "uv_index",
          "timestamp"
        ],
        "title": "WeatherResponse"
      },
      "WoreInsteadItem": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "thumbnail_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Path"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "type",
          "thumbnail_url"
        ],
        "title": "WoreInsteadItem"
      },
      "WoreInsteadRequest": {
        "properties": {
          "items": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Items"
          },
          "rating": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items"
        ],
        "title": "WoreInsteadRequest"
      },
      "app__api__outfits__FeedbackSummary": {
        "properties": {
          "rating": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn At"
          },
          "actually_worn": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actually Worn"
          },
          "wore_instead_items": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WoreInsteadItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wore Instead Items"
          }
        },
        "type": "object",
        "title": "FeedbackSummary"
      },
      "app__api__pairings__FeedbackSummary": {
        "properties": {
          "rating": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "worn_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worn At"
          }
        },
        "type": "object",
        "title": "FeedbackSummary"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}