forked from platypush/platypush
Fabio Manganiello
1a777c6276
The Todoist Websocket interface is no longer working properly, and I'm sick of reverse engineering it. Closes: #305
305 lines
6.7 KiB
Python
305 lines
6.7 KiB
Python
from marshmallow import EXCLUDE, fields
|
|
from marshmallow.schema import Schema
|
|
|
|
from platypush.schemas import DateTime
|
|
|
|
|
|
class TodoistUserSchema(Schema):
|
|
"""
|
|
Todoist user schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
auto_reminder = fields.Int()
|
|
avatar_big = fields.Url(
|
|
metadata={
|
|
"description": "The user's avatar URL.",
|
|
"example": "https://example.com/user/100x100.png",
|
|
},
|
|
)
|
|
|
|
avatar_medium = fields.Url(
|
|
metadata={
|
|
"description": "The user's avatar URL.",
|
|
"example": "https://example.com/user/50x50.png",
|
|
},
|
|
)
|
|
|
|
avatar_s640 = fields.Url(
|
|
metadata={
|
|
"description": "The user's avatar URL.",
|
|
"example": "https://example.com/user/640x640.png",
|
|
},
|
|
)
|
|
|
|
avatar_small = fields.Url(
|
|
metadata={
|
|
"description": "The user's avatar URL.",
|
|
"example": "https://example.com/user/25x25.png",
|
|
},
|
|
)
|
|
|
|
business_account_id = fields.Int(
|
|
metadata={
|
|
"description": "The user's business account ID.",
|
|
"example": 123456,
|
|
},
|
|
)
|
|
|
|
daily_goal = fields.Int(
|
|
metadata={
|
|
"description": "The user's daily goal.",
|
|
"example": 100,
|
|
},
|
|
)
|
|
|
|
date_format = fields.String(
|
|
metadata={
|
|
"description": "The user's date format.",
|
|
"example": "dd-mm-yyyy",
|
|
},
|
|
)
|
|
|
|
dateist_inline_disabled = fields.Bool()
|
|
dateist_lang = fields.String(
|
|
metadata={
|
|
"description": "The user's dateist language.",
|
|
"example": "en",
|
|
},
|
|
)
|
|
|
|
days_off = fields.List(
|
|
fields.Int(),
|
|
metadata={
|
|
"description": "The user's days off.",
|
|
"example": [0, 6],
|
|
},
|
|
)
|
|
|
|
default_reminder = fields.String()
|
|
email = fields.Email(
|
|
metadata={
|
|
"description": "The user's email.",
|
|
"example": "user@example.com",
|
|
},
|
|
)
|
|
|
|
features = fields.Dict()
|
|
full_name = fields.String(
|
|
metadata={
|
|
"description": "The user's full name.",
|
|
"example": "John Doe",
|
|
},
|
|
)
|
|
|
|
id = fields.Int(
|
|
required=True,
|
|
metadata={
|
|
"description": "The user's unique identifier.",
|
|
"example": 123456,
|
|
},
|
|
)
|
|
|
|
image_id = fields.String()
|
|
inbox_project = fields.Int(
|
|
metadata={
|
|
"description": "The user's inbox project ID.",
|
|
"example": 123456,
|
|
},
|
|
)
|
|
|
|
is_biz_admin = fields.Bool()
|
|
is_premium = fields.Bool()
|
|
join_date = DateTime()
|
|
karma = fields.Float()
|
|
karma_trend = fields.String()
|
|
lang = fields.String(
|
|
metadata={
|
|
"description": "The user's language.",
|
|
"example": "en",
|
|
},
|
|
)
|
|
|
|
legacy_inbox_project = fields.Int()
|
|
mobile_host = fields.String()
|
|
mobile_number = fields.String()
|
|
next_week = fields.Int()
|
|
premium_until = DateTime()
|
|
share_limit = fields.Int()
|
|
sort_order = fields.Int()
|
|
start_day = fields.Int()
|
|
start_page = fields.String()
|
|
theme = fields.Int()
|
|
time_format = fields.String(
|
|
metadata={
|
|
"description": "The user's time format.",
|
|
"example": "24h",
|
|
},
|
|
)
|
|
|
|
token = fields.String()
|
|
tz_info = fields.Dict()
|
|
unique_prefix = fields.Int()
|
|
websocket_url = fields.Url()
|
|
weekly_goal = fields.Int()
|
|
|
|
|
|
class TodoistProjectSchema(Schema):
|
|
"""
|
|
Todoist project schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
child_order = fields.Int()
|
|
collapsed = fields.Bool()
|
|
color = fields.Int()
|
|
has_more_notes = fields.Bool()
|
|
id = fields.Int(required=True)
|
|
is_archived = fields.Bool()
|
|
is_deleted = fields.Bool()
|
|
is_favorite = fields.Bool()
|
|
name = fields.String(required=True)
|
|
shared = fields.Bool()
|
|
inbox_project = fields.Bool()
|
|
legacy_id = fields.Int()
|
|
parent_id = fields.Int()
|
|
|
|
|
|
class TodoistItemSchema(Schema):
|
|
"""
|
|
Todoist item schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
assigned_by_uid = fields.Int()
|
|
checked = fields.Bool()
|
|
child_order = fields.Int()
|
|
collapsed = fields.Bool()
|
|
content = fields.String()
|
|
date_added = DateTime()
|
|
date_completed = DateTime()
|
|
day_order = fields.Int()
|
|
due = fields.Dict()
|
|
has_more_notes = fields.Bool()
|
|
id = fields.Int(required=True)
|
|
in_history = fields.Bool()
|
|
is_deleted = fields.Bool()
|
|
labels = fields.List(fields.String())
|
|
legacy_project_id = fields.Int()
|
|
parent_id = fields.Int()
|
|
priority = fields.Int()
|
|
project_id = fields.Int()
|
|
responsible_uid = fields.Int()
|
|
section_id = fields.Int()
|
|
sync_id = fields.Int()
|
|
user_id = fields.Int()
|
|
|
|
|
|
class TodoistFilterSchema(Schema):
|
|
"""
|
|
Todoist filter schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
color = fields.Int()
|
|
id = fields.Int(required=True)
|
|
is_deleted = fields.Bool()
|
|
item_order = fields.Int()
|
|
name = fields.String()
|
|
query = fields.String()
|
|
user_id = fields.Int()
|
|
|
|
|
|
class TodoistLiveNotificationSchema(Schema):
|
|
"""
|
|
Todoist live notifications schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
id = fields.Int(required=True)
|
|
notification_key = fields.String()
|
|
notification_type = fields.String()
|
|
project_id = fields.Int()
|
|
user_id = fields.Int()
|
|
is_deleted = fields.Bool()
|
|
is_unread = fields.Bool()
|
|
completed_last_month = fields.Bool()
|
|
karma_level = fields.Int()
|
|
promo_img = fields.Url()
|
|
completed_tasks = fields.Int()
|
|
created = fields.String()
|
|
|
|
|
|
class TodoistCollaboratorSchema(Schema):
|
|
"""
|
|
Todoist collaborator schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
data = fields.Dict()
|
|
|
|
|
|
class TodoistNoteSchema(Schema):
|
|
"""
|
|
Todoist note schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
data = fields.Dict()
|
|
|
|
|
|
class TodoistProjectNoteSchema(Schema):
|
|
"""
|
|
Todoist project note schema.
|
|
"""
|
|
|
|
class Meta: # pylint: disable=too-few-public-methods
|
|
"""
|
|
Meta class.
|
|
"""
|
|
|
|
unknown = EXCLUDE
|
|
|
|
data = fields.Dict()
|