Class Diagrams

classDiagram
    direction LR
    class OAuthTokenV1 {
        access_token: UUID
        expires_in: int
        token_type: Literal['bearer'] = 'bearer'
        scope: Literal['tasks:read tasks:write'] = 'tasks:read tasks:write'
    }

    class ProjectRespV1 {
        root: ProjectV1
    }

    class OAuthAuthorizeURLV1 {
        client_id: str
        scope: Literal['tasks:read tasks:write'] = 'tasks:read tasks:write'
        state: Any = None
        response_type: Literal['code'] = 'code'
        base_url: HttpUrl = https://ticktick.com/oauth/authorize
    }

    class ProjectDataRespV1 {
        project: ProjectV1
        tasks: list[TaskRespV1]
        columns: list[ColumnV1]
    }

    class UpdateTaskV1 {
        id: str
        project_id: str
        title: str | None = None
        content: str | None = None
        desc: str | None = None
        is_all_day: bool | None = None
        start_date: str | None = None
        due_date: str | None = None
        time_zone: str | None = None
        reminders: list[str] | None = None
        repeat_flag: str | None = None
        priority: Literal[0, 1, 3, 5] | None = None
        sort_order: int | None = None
        items: list[UpdateItemV1] | None = None
    }

    class TaskRespV1 {
        id: str
        project_id: str
        title: str
        is_all_day: bool
        completed_time: str | None = None
        content: str | None = None
        desc: str | None = None
        due_date: str | None = None
        items: list[ItemV1] | None = None
        priority: Literal[0, 1, 3, 5]
        reminders: list[str] | None = None
        repeat_flag: str | None = None
        sort_order: int
        start_date: str | None = None
        status: bool
        time_zone: str
    }

    class CreateProjectV1 {
        name: str
        color: Color | None = None
        sort_order: int | None = None
        view_mode: Literal['list', 'kanban', 'timeline'] | None = None
        kind: Literal['TASK', 'NOTE'] | None = None
    }

    class ProjectV1 {
        id: str
        name: str
        color: str | None = None
        sort_order: int
        closed: bool | None = None
        group_id: str | None = None
        view_mode: Literal['list', 'kanban', 'timeline'] | None = None
        permission: Literal['read', 'write', 'comment'] | None = None
        kind: Literal['TASK', 'NOTE'] | None = None
    }

    class CreateTaskV1 {
        id: str | None = None
        title: str
        project_id: str
        content: str | None = None
        desc: str | None = None
        is_all_day: bool | None = None
        start_date: str | None = None
        due_date: str | None = None
        time_zone: str | None = None
        reminders: list[str] | None = None
        repeat_flag: str | None = None
        priority: Literal[0, 1, 3, 5] | None = None
        sort_order: int | None = None
        items: list[CreateItemV1] | None = None
    }

    class ProjectsRespV1 {
        root: list[ProjectV1]
    }

    class UpdateProjectV1 {
        name: str | None = None
        color: Color | None = None
        sort_order: int | None = None
        view_mode: Literal['list', 'kanban', 'timeline'] | None = None
        kind: Literal['TASK', 'NOTE'] | None = None
    }

    class OAuthTokenURLV1 {
        client_id: str
        client_secret: str
        code: str
        oauth_redirect_url: HttpUrl = http://127.0.0.1:8080/
        scope: Literal['tasks:read tasks:write'] = 'tasks:read tasks:write'
        grant_type: Literal['authorization_code'] = 'authorization_code'
        base_url: HttpUrl = https://ticktick.com/oauth/token
    }

    OAuthAuthorizeURLV1 ..> HttpUrl
    OAuthAuthorizeURLV1 ..> Any
    OAuthTokenURLV1 ..> HttpUrl
    CreateProjectV1 ..> Color
    UpdateProjectV1 ..> Color
    CreateTaskV1 ..> CreateItemV1
    UpdateTaskV1 ..> UpdateItemV1
    OAuthTokenV1 ..> UUID
    ProjectDataRespV1 ..> TaskRespV1
    ProjectDataRespV1 ..> ColumnV1
    ProjectDataRespV1 ..> ProjectV1
    ProjectRespV1 ..> ProjectV1
    ProjectsRespV1 ..> ProjectV1
    TaskRespV1 ..> ItemV1

Info

This was auto-generated code by pydantic-2-mermaid.