@@ -65,7 +65,7 @@ def list(
6565 def create (
6666 self ,
6767 title : str ,
68- meeting_id : int ,
68+ meeting_id : int | None = None ,
6969 due_date : str | None = None ,
7070 user_id : int | None = None ,
7171 notes : str | None = None ,
@@ -74,7 +74,7 @@ def create(
7474
7575 Args:
7676 title: The title of the new todo
77- meeting_id: The ID of the meeting associated with the todo
77+ meeting_id: The ID of the meeting associated with the todo (optional)
7878 due_date: The due date of the todo (optional)
7979 user_id: The ID of the user responsible for the todo
8080 (default: initialized user ID)
@@ -85,10 +85,15 @@ def create(
8585
8686 Example:
8787 ```python
88+ # Create a user todo
8889 client.todo.create(
89- title="New Todo", meeting_id=1, due_date="2024-06-15"
90+ title="New Todo", due_date="2024-06-15"
91+ )
92+
93+ # Create a meeting todo
94+ client.todo.create(
95+ title="Meeting Action", meeting_id=1, due_date="2024-06-15"
9096 )
91- # Returns: Todo(id=1, name='New Todo', due_date='2024-06-15', ...)
9297 ```
9398
9499 """
@@ -98,13 +103,29 @@ def create(
98103 payload : dict [str , Any ] = {
99104 "title" : title ,
100105 "accountableUserId" : user_id ,
101- "notes" : notes ,
102106 }
103107
108+ if notes is not None :
109+ payload ["notes" ] = notes
110+
104111 if due_date is not None :
105112 payload ["dueDate" ] = due_date
106113
107- response = self ._client .post (f"L10/{ meeting_id } /todos" , json = payload )
114+ if meeting_id is not None :
115+ # Meeting todo - use the correct endpoint
116+ payload = {
117+ "Title" : title ,
118+ "ForId" : user_id ,
119+ }
120+ if notes is not None :
121+ payload ["Notes" ] = notes
122+ if due_date is not None :
123+ payload ["dueDate" ] = due_date
124+ response = self ._client .post (f"L10/{ meeting_id } /todos" , json = payload )
125+ else :
126+ # User todo
127+ response = self ._client .post ("todo/create" , json = payload )
128+
108129 response .raise_for_status ()
109130 data = response .json ()
110131
@@ -115,7 +136,7 @@ def create(
115136 "DetailsUrl" : data .get ("DetailsUrl" ),
116137 "DueDate" : data .get ("DueDate" ),
117138 "CompleteTime" : None ,
118- "CreateTime" : datetime .now ().isoformat (),
139+ "CreateTime" : data . get ( "CreateTime" , datetime .now ().isoformat () ),
119140 "OriginId" : meeting_id ,
120141 "Origin" : None ,
121142 "Complete" : False ,
0 commit comments