Skip to content

Latest commit

 

History

History
83 lines (72 loc) · 9.26 KB

File metadata and controls

83 lines (72 loc) · 9.26 KB

API Coverage Matrix

This matrix tracks the Dida365 Web API surfaces that DidaCLI intentionally supports. It separates verified command coverage from experimental or unknown private endpoints.

Coverage Status

Area Web API surface CLI command Status Verification
Auth Cookie: t=<token> auth login, auth cookie set, auth status --verify, auth logout Stable Unit tests and live auth verify
Full sync GET /batch/check/0 sync all Stable Unit tests and live read
Agent context derived from GET /batch/check/0 agent context, agent context --outline Stable derived command Unit compact-output and outline de-duplication tests; live outline read on 2026-05-10
Incremental sync GET /batch/check/{checkpoint} sync checkpoint Stable Unit tests preserve add/update/delete/order/reminder deltas
Settings GET /user/preferences/settings settings get, settings get --include-web Stable Unit query test and live read
Completed tasks GET /project/all/completed completed today/yesterday/week/list Stable Unit query test and live read
Closed history `GET /project/{projectIds all}/closed?...` closed list Stable read
Trash pagination GET /project/all/trash/page?from={cursor} trash list --cursor N Stable read Unit endpoint test and live read on 2026-05-10
Project task list GET /project/{projectId}/tasks project tasks <project-id> --limit N Stable Unit endpoint test and live read
Project columns GET /column/project/{projectId} project columns, column list Stable read Unit endpoint test and live read
Task CRUD POST /batch/task task create/update/complete/delete Stable Unit request tests and live reversible smoke
Task advanced fields /batch/task fields --content, --desc, --start, --due, --timezone, --tag, --tags, --item, --column, --reminder, --repeat*, --all-day, --floating, --priority 0 Stable Unit request tests and live reversible smoke
Task due activity counts POST /task/activity/count/all task due-counts Stable read Unit endpoint test and live read
Task move POST /batch/taskProject task move Stable Unit request tests and live reversible smoke
Task parent/subtask POST /batch/taskParent task parent Stable Unit request tests and live reversible smoke
Project CRUD POST /batch/project project create/update/delete Stable Unit request tests and live reversible smoke
Folder CRUD POST /batch/projectGroup folder create/update/delete Stable Unit request tests and live reversible smoke
Tag create/update POST /batch/tag tag create/update Stable Unit request tests and live reversible smoke
Tag rename PUT /tag/rename tag rename Stable Unit request tests and live reversible smoke
Tag merge PUT /tag/merge tag merge --yes Stable with caveat Unit request tests and live smoke; source tag may remain
Tag delete DELETE /tag?name=... tag delete --yes Stable Unit URL escaping test and live reversible smoke
Filters sync payload filters filter list Stable read Unit sync-view test and live read
Column create POST /column column create Experimental Unit request test; live write avoided because delete endpoint is unknown
Task comments GET/POST/PUT/DELETE /project/{projectId}/task/{taskId}/comment(s) comment list/create/update/delete Stable without attachments Unit request tests and reversible live smoke; live empty-list read on 2026-05-10
Comment attachment upload POST /api/v1/attachment/upload/comment/{projectId}/{taskId} plus comment attachments body comment create --file <path> Stable comment attachment create Reversible live probe on 2026-05-10 confirmed multipart field file, PNG upload response keys, comment create attach payload, read-back, and cleanup; unit tests cover multipart request shape and dry-run discovery
Attachment quota GET /api/v1/attachment/isUnderQuota, GET /api/v1/attachment/dailyLimit attachment quota Stable read Unit endpoint test and live read on 2026-05-10
Daily reminder preferences GET /user/preferences/dailyReminder reminder daily Stable read Unit endpoint test and live read
Sharing contacts GET /share/shareContacts, GET /project/share/recentProjectUsers share contacts, share recent-users Stable read Unit endpoint test and live read
Project share state GET /project/{projectId}/shares, GET /project/{projectId}/share/check-quota, GET /project/{projectId}/collaboration/invite-url share project shares/quota/invite-url Stable read Unit endpoint test and live read
Calendar subscriptions GET /calendar/subscription calendar subscriptions Stable read Unit endpoint test and live read
Calendar archived and accounts GET /calendar/archivedEvent, GET /calendar/third/accounts calendar archived, calendar third-accounts Stable read Unit endpoint test and live read
Statistics GET /statistics/general stats general Stable read Unit endpoint test and live read
Project templates GET /projectTemplates/all?timestamp=... template project list Stable read Unit endpoint test and live read
Search GET /search/all?keywords=... search all Stable read Unit endpoint test and live read
User metadata GET /user/status, GET /user/profile, GET /user/sessions?lang=... user status, user profile, user sessions Stable read Unit endpoint test and live read
Pomodoro preferences GET /user/preferences/pomodoro pomo preferences Stable read Live read
Pomodoro records GET /pomodoros, GET /pomodoros/timing pomo list, pomo timing Stable read Live read
Pomodoro statistics and timeline GET /pomodoros/statistics/generalForDesktop, GET /pomodoros/timeline pomo stats, pomo timeline Stable read Unit endpoint test and live read
Task Pomodoro records GET /pomodoros/task?projectId=...&taskId=... pomo task Stable read Unit endpoint test and live read
Habit preferences GET /user/preferences/habit?platform=web habit preferences Stable read Live read
Habits and sections GET /habits, GET /habitSections habit list, habit sections Stable read Live read
Habit check-ins POST /habitCheckins/query habit checkins Stable read Unit endpoint test and live read with empty account
Raw read any GET path under base URL raw get Stable read-only Live reads
Quadrant view derived from sync quadrant list/view Stable derived command Unit classifier test and live read

Explicit Non-Goals Until Verified

These surfaces are visible in payloads or product behavior but do not yet have verified command coverage:

  • Column update/delete/order: exact /batch/columnProject endpoint is visible in the webapp bundle, but add/update/delete/order body shapes and rollback behavior are not verified.
  • Legacy named column probes: read-only probes for /project/{id}/data and /project/{id}/columns returned 404 on the observed CN Web API. Use GET /column/project/{projectId} instead.
  • Attachments/media upload: comment attachment upload and association are exposed through comment create --file <path>; task-level upload and render/download path shapes are bundle-mapped as /api/v1/attachment/upload/{projectId}/{taskId}/{attachmentId} and /api/v1/attachment/{projectId}/{taskId}/{attachmentId}, but task-level association/persistence, accepted file matrix, and uploaded-but-not-attached cleanup behavior are not verified.
  • Task activity: the webapp bundle maps detail reads to legacy v1 GET /task/activity/{taskId} with optional skip and lastId; 2026-05-10 raw CLI probes returned HTTP 500 with errorCode=need_pro for no query, skip=0, and skip=0&lastId=, so response shape and pagination still need a Pro account or browser trace.
  • Comment attachments: multipart upload and attachment body flow are exposed through comment create --file <path>.
  • Collaboration/team permission writes: read-only share metadata is mapped, but invite creation/deletion and user permission changes are not exposed until multi-user behavior and rollback paths are mapped.
  • Filter writes: /batch/filter is visible in the webapp bundle, but create/update/delete payloads are not mapped.
  • Arbitrary raw writes: intentionally unavailable for safety. Add a first-class command and tests instead.

Safety Policy

  • All writes support --dry-run.
  • Delete and merge operations require --yes.
  • Normal create/update/move operations execute directly when --dry-run is omitted, matching Lark CLI-style operator ergonomics.
  • Agent docs and the repo skill instruct agents to preview generated writes first.
  • The CLI should reject unsupported flags instead of silently ignoring them.

Adding New Coverage

Before adding another Web API write command:

  1. Capture the endpoint, method, request body, response shape, and rollback path.
  2. Add a request-shape unit test.
  3. Add a CLI dry-run test.
  4. Run a reversible live smoke test when possible.
  5. Update this matrix, docs/web-api.md, docs/commands.md, and skills/dida-cli/SKILL.md.