# Microsoft To Do Routing Reference

**App name:** `microsoft-to-do`
**Base URL proxied:** `graph.microsoft.com`

## API Path Pattern

```
/microsoft-to-do/v1.0/me/todo/{resource}
```

All Microsoft To Do endpoints use the Microsoft Graph API under the `/me/todo/` path.

## Common Endpoints

### Task Lists

#### List All Task Lists
```bash
GET /microsoft-to-do/v1.0/me/todo/lists
```

#### Get Task List
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
```

#### Create Task List
```bash
POST /microsoft-to-do/v1.0/me/todo/lists
Content-Type: application/json

{
  "displayName": "My New List"
}
```

#### Update Task List
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
Content-Type: application/json

{
  "displayName": "Updated List Name"
}
```

#### Delete Task List
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
```

### Tasks

#### List Tasks
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
```

#### Get Task
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
```

#### Create Task
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
Content-Type: application/json

{
  "title": "New Task",
  "importance": "high",
  "status": "notStarted",
  "dueDateTime": {
    "dateTime": "2024-12-31T17:00:00",
    "timeZone": "UTC"
  }
}
```

#### Update Task
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
Content-Type: application/json

{
  "status": "completed"
}
```

#### Delete Task
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
```

### Checklist Items

#### List Checklist Items
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
```

#### Create Checklist Item
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
Content-Type: application/json

{
  "displayName": "Subtask name"
}
```

#### Update Checklist Item
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
Content-Type: application/json

{
  "isChecked": true
}
```

#### Delete Checklist Item
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
```

### Linked Resources

#### List Linked Resources
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
```

#### Create Linked Resource
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
Content-Type: application/json

{
  "webUrl": "https://example.com/item",
  "applicationName": "MyApp",
  "displayName": "Related Item"
}
```

#### Delete Linked Resource
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}
```

## Notes

- Task list IDs and task IDs are opaque base64-encoded strings
- Timestamps use ISO 8601 format in UTC by default
- The `dateTimeTimeZone` type requires both `dateTime` and `timeZone` fields
- Task `status` values: `notStarted`, `inProgress`, `completed`, `waitingOnOthers`, `deferred`
- Task `importance` values: `low`, `normal`, `high`
- Supports OData query parameters: `$select`, `$filter`, `$orderby`, `$top`, `$skip`
- Pagination uses `@odata.nextLink` for continuation

## Resources

- [Microsoft To Do API Overview](https://learn.microsoft.com/en-us/graph/api/resources/todo-overview)
- [todoTaskList Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotasklist)
- [todoTask Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotask)
