# Yokan Board MCP
#
# Copyright (C) 2025 Julian I. Kamil
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# generated by datamodel-codegen:
# filename: openapi.yaml
# timestamp: 2025-10-26T19:38:14+00:00
from __future__ import annotations
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, EmailStr, Field
class User(BaseModel):
id: Optional[int] = Field(
None,
description="Unique identifier for the user.",
json_schema_extra={"example": 1},
)
username: Optional[str] = Field(
None,
description="User's chosen username.",
json_schema_extra={"example": "testuser"},
)
email: Optional[EmailStr] = Field(
None,
description="User's email address.",
json_schema_extra={"example": "test@example.com"},
)
class Board(BaseModel):
id: Optional[int] = Field(
None,
description="Unique identifier for the board.",
json_schema_extra={"example": 101},
)
user_id: Optional[int] = Field(
None,
description="ID of the user who owns the board.",
json_schema_extra={"example": 1},
)
name: Optional[str] = Field(
None,
description="Name of the Kanban board.",
json_schema_extra={"example": "My Project Board"},
)
data: Optional[Dict[str, Any]] = Field(
None,
description="JSON object representing the board's structure (columns, tasks, etc.).",
json_schema_extra={
"example": {
"columns": {
"col1": {
"id": "col1",
"title": "To Do",
"tasks": [
{
"id": "task1",
"content": "Buy groceries",
"dueDate": "2023-10-26",
"description": "Milk, eggs, bread",
"parentId": None,
"subtasks": [],
}
],
}
}
}
},
)
class Column(BaseModel):
id: str
title: str
tasks: List[Any] = []
highlightColor: Optional[str] = None
minimized: Optional[bool] = False
class Error(BaseModel):
status: Optional[str] = Field(
None,
description="Status of the error (e.g., 'fail', 'error').",
json_schema_extra={"example": "fail"},
)
message: Optional[str] = Field(
None,
description="A human-readable error message.",
json_schema_extra={"example": "Invalid input data"},
)