Dida365 OpenAPI
Overview
Use this skill to call the documented Dida365 OpenAPI surface through the bundled Python CLI.
Prefer python scripts/dida365.py ... over ad hoc curl because the bundled CLI already handles OAuth, config loading, exact project-name resolution, structured errors, and every documented endpoint.
Use Python 3.9 or newer.
The skill's default support surface is the documented API plus stable tested extensions that behaved consistently in real app/API round-trips:
- task
kindwrites forTEXTandNOTE - task
tagswrites
Boundaries
This skill intentionally stays on the official Dida365 OpenAPI surface. It does not use browser-cookie private APIs.
That means the following are explicit non-goals here:
- standalone tag catalog / CRUD operations outside task create or update writes
- project folder / group operations
- full-account sync from private endpoints
- private batch task/project operations
- achievement or productivity-stat calculations from private data
If a user asks for those, state that they are outside the official API-backed scope of this skill.
Quick Start
- Persist app config once:
python scripts/dida365.py auth setup --client-id ... --client-secret ... --redirect-uri ...
- Preferred OAuth path:
python scripts/dida365.py auth login-local --client-id ... --client-secret ...- Open the URL printed to stderr and finish the browser flow.
- Verify the connection:
python scripts/dida365.py project data --project-id inbox
- Read or write data:
python scripts/dida365.py project listpython scripts/dida365.py task create --project-id inbox --title "Example"python scripts/dida365.py task completed --start-date ... --end-date ...to query completed tasks across all projects
Manual authorize-url / exchange-code flows remain supported; see references/auth-and-config.md when the localhost callback flow is not suitable.
Command Rules
- Use
authfor OAuth helpers, token cache inspection, and token cleanup. - Use
projectfor project CRUD and project data reads. - Use
taskfor task CRUD, complete, move, completed-task queries, and filter queries. - Use
project data --project-id inboxfor inbox reads. Do not useproject get --project-id inbox. - Use
--project-nameonly when the user gave a human-readable project name. Resolution is exact match only. - Use
--json-fileor--jsonwhen the payload contains arrays or nested objects such asitems,reminders, bulk move operations, or advanced filter bodies. - Treat first-class flags as the final override layer.
--json-fileloads a base payload,--jsonoverrides it, and scalar flags override both. - After write operations such as
task create,task update, andtask complete, prefer a read-back step when the stored result matters. Usetask getto verify fields likereminders,repeatFlag,tags, andkind. - Stable task
kindwrites areTEXTandNOTE. Use checklistitemsinstead of directCHECKLISTkind writes. task filter --tag-jsonuses any-match / OR semantics in real testing, not all-match semantics.- Unfiltered
task filterresponses are capped at 200 rows for this endpoint on the tested account. Narrow the query window or add filters when completeness matters. - Use the enum values, date format, confirmed reminder patterns, and confirmed recurrence patterns from
references/api-reference.md. Do not invent undocumented values. - The CLI blocks known gray-area reminder and recurrence values. If a pattern is not listed as confirmed in
references/api-reference.md, do not assume it is safe. - Expect JSON on stdout for every command. Commands that allow successful empty responses normalize them to
{"ok": true}. - Expect structured JSON errors on stderr for validation failures and non-2xx API responses.
Auth And Config
- Config precedence is CLI flags, then environment variables, then local files in
${XDG_CONFIG_HOME:-~/.config}/dida365-openapi/. auth exchange-codeandauth login-localpersist config and token state;auth setuppersists config without performing OAuth.- See
references/auth-and-config.mdfor environment variables, local file locations, and localhost callback details.
Command Selection
- Need the raw authorization link: use
auth authorize-url. - Already have an OAuth
code: useauth exchange-code. - Want the CLI to wait for the browser callback: use
auth login-local. - Need to inspect current config or token state: use
auth status. - Need to remove only the cached token: use
auth clear-token. - Need inbox tasks or columns: use
project data --project-id inbox. - Need one project by id or exact name: use
project get. - Need tasks under a project plus columns: use
project data. - Need today's tasks: use
task filterwith the local-daystartDate/endDatewindow. - Need a weekly completion review: use
task completedwith a weekly date range and omit--project-idfor an account-wide view. - Need an exact documented create/update payload: prefer
--json-file. - Need a single move operation quickly: use
task move --from-project-id ... --to-project-id ... --task-id .... - Need multiple move operations: use
task move --json '[{...}, {...}]'. - Need completed tasks across all projects: omit
--project-idfromtask completed.
References
- Read references/auth-and-config.md for OAuth flow details, config precedence, token cache rules, and local callback behavior.
- Read references/api-reference.md for endpoint coverage, field names, request-body quirks, documented schema notes, and confirmed
repeatFlagpatterns. - Read references/examples.md for command examples covering common read/write flows.