Skip to content

Plan to Migrate to Todoist API v1 #70

@AhmedZaki99

Description

@AhmedZaki99

On January 7, the Todoist Dev team took the first steps towards shutting down the Sync v9 API as discussed in this announcement.
We have until February 10 to migrate to the new unified API, so I started working on the migration with the help of Claude Opus 4.5 AI Agent.

Proper context has been provided by scraping the entire Todoist API v1 documentation and turning it into a set of markdown files that Claude Opus can easily read and refer to.
I have tried to follow the best practices of writing prompts and spent some time planning before taking the first steps to start code modifications.
I have also instructed the Agent to split the work required into multiple PRs so that they become easy to review.

Starting from this line, most of the content below and the upcoming PR descriptions are generated by AI.

Overview

This issue tracks the migration of Todoist.Net from the Todoist Sync API v9 to the new unified Todoist API v1. This is a major breaking release that will be versioned as v11.0.0.

The Todoist API v1 combines the previous REST and Sync APIs into a single unified API with improved consistency, cursor-based pagination, and updated error handling.

Migration Phases

  • PR 1: Core Renames
  • PR 2: Foundation and new REST Endpoints and Services
  • PR 3: Documentation and Final Release Prep

PR 1: Core Renames

  • Rename Item -> DetailedTask, AddItem -> AddTask, UpdateItem -> UpdateTask
  • Rename Note -> Comment
  • Rename ItemsService -> TasksService, NotesService -> CommentsService
  • Update client properties: Items -> Tasks, Notes -> Comments
  • Update test files to use new naming

PR 2: Foundation and new REST Endpoints and Services

  • Update REST client base URL from sync/v9 to api/v1
  • Add new HTTP methods (DeleteAsync, PutAsync, PostJsonAsync)
  • Add PaginatedResponse<T> model for cursor-based pagination
  • Update error handling for v1 API format (error_tag, http_code, error_extra)
  • Remove deprecated properties (UserInfo.IsBizAdmin, CompletedTask.CommentCount)
  • Implement new v1 REST endpoints for Tasks
  • Implement new v1 REST endpoints for Comments
  • Implement new v1 REST endpoints for Projects
  • Implement new v1 REST endpoints for Sections
  • Implement new v1 REST endpoints for Labels
  • Add pagination support to list methods
  • Update service implementations for v1 endpoint patterns

PR 3: Documentation and Final Release Prep

  • Update README with new API usage examples
  • Update inline XML documentation
  • Add migration guide for users upgrading from v10.x
  • Final integration testing

Breaking Changes Summary

Category Old New
Model Item DetailedTask
Model AddItem AddTask
Model UpdateItem UpdateTask
Model Note Comment
Service ItemsService TasksService
Service NotesService CommentsService
Client Property ITodoistClient.Items ITodoistClient.Tasks
Client Property ITodoistClient.Notes ITodoistClient.Comments

Compatibility Notes

  • JSON property names remain unchanged (items, notes, item_id) for sync API response compatibility
  • Sync command type strings remain unchanged (item_add, note_add) for API compatibility
  • Target frameworks unchanged: netstandard2.0, net462

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions