i-plane 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -3
- package/dist/cli.js +84 -66
- package/docs/api-coverage.md +114 -0
- package/package.json +2 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# API coverage
|
|
2
|
+
|
|
3
|
+
Paths below are relative to `/api/v1/workspaces/{workspace_slug}/`. The command
|
|
4
|
+
registry defines the supported CLI surface, including value flags and aliases;
|
|
5
|
+
`tests/registry.test.ts` checks it against the dispatch table and exercises the
|
|
6
|
+
actual handlers. `tests/cli.test.ts` verifies the entry point's flag validation.
|
|
7
|
+
|
|
8
|
+
| Resource | Supported operations | CLI |
|
|
9
|
+
| --- | --- | --- |
|
|
10
|
+
| Projects | GET/POST `projects/`; PATCH/DELETE `projects/{project}/`; POST `projects/{project}/archive/` | `projects`, `project create`, `project update`, `project rm`, `project archive` |
|
|
11
|
+
| Work items | GET/POST `projects/{project}/issues/`; GET/PATCH/DELETE `projects/{project}/issues/{issue}/`; GET `issues/{ref}/` | `list`, `create`, `show`, `update`, `done`, `delete` |
|
|
12
|
+
| Work item fields | `parent`, `assignees`, `labels`, `start_date`, `target_date`, `name`, `state`, `priority`, `description_html` | `create` and `update` flags; `done` forwards update fields except state |
|
|
13
|
+
| Labels | GET/POST `projects/{project}/labels/`; DELETE `projects/{project}/labels/{label}/` | `labels`, `label create`, `label rm` |
|
|
14
|
+
| States | GET/POST `projects/{project}/states/`; PATCH/DELETE `projects/{project}/states/{state}/` | `states`, `state create`, `state update`, `state rm` |
|
|
15
|
+
| Comments | GET/POST `projects/{project}/issues/{issue}/comments/` | `comments`, `comment`, `show --comments` |
|
|
16
|
+
| Cycles | GET/POST `projects/{project}/cycles/`; PATCH `projects/{project}/cycles/{cycle}/`; GET `projects/{project}/cycles-lite/`; GET/POST `projects/{project}/cycles/{cycle}/cycle-issues/`; POST `projects/{project}/cycles/{cycle}/transfer-issues/` | `cycles`, `cycle create`, `cycle update`, `cycle add`, `cycle issues`, `cycle transfer` |
|
|
17
|
+
| Modules | GET/POST `projects/{project}/modules/`; GET `projects/{project}/modules-lite/`; GET/POST `projects/{project}/modules/{module}/module-issues/` | `modules`, `module create`, `module add`, `module issues` |
|
|
18
|
+
| Intake | GET/POST `projects/{project}/intake-issues/`; GET/PATCH/DELETE `projects/{project}/intake-issues/{issue}/` | `intake list`, `intake create`, `intake show`, `intake update`, `intake rm` |
|
|
19
|
+
| Project features | `cycle_view`, `module_view`, `intake_view` on project POST/PATCH | `project create` and `project update`: `--cycles`, `--modules`, `--intake` |
|
|
20
|
+
| Search | GET `issues/search/` | `search` |
|
|
21
|
+
| Members | GET `members-lite/` | `members`, named assignee resolution |
|
|
22
|
+
| Current user | GET `/api/v1/users/me/` | `whoami` |
|
|
23
|
+
| Summary | GET `projects/{project}/summary/` | `summary` |
|
|
24
|
+
|
|
25
|
+
The compatibility target uses the `issues/` routes. The current public
|
|
26
|
+
[work item reference](https://developers.plane.so/api-reference/issue/overview)
|
|
27
|
+
documents `work-items/` instead. A route migration must be verified against the
|
|
28
|
+
target server; do not change paths solely to match a newer documentation release.
|
|
29
|
+
|
|
30
|
+
## What modules and intake are for
|
|
31
|
+
|
|
32
|
+
A module groups work toward a feature, milestone or other goal and may span
|
|
33
|
+
several cycles. A cycle is a time window. Work items can belong to multiple
|
|
34
|
+
modules. A module's lead and members are separate from work item assignees.
|
|
35
|
+
The module status describes its overall planning stage; work item states show
|
|
36
|
+
individual progress. See [Plane's module guide](https://docs.plane.so/core-concepts/modules).
|
|
37
|
+
|
|
38
|
+
Intake is a queue for reports and requests that have not yet been accepted into
|
|
39
|
+
project work. Requests start in Triage with a pending decision. They can be
|
|
40
|
+
accepted, rejected, snoozed or linked to an existing work item as a duplicate.
|
|
41
|
+
This keeps undecided requests out of committed work. See the
|
|
42
|
+
[intake overview](https://docs.plane.so/intake/overview).
|
|
43
|
+
|
|
44
|
+
| Resource | Plane fields | Current CLI support |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| Module | Name, description, overall status, start/due dates | `module create` with name, `--description`, `--status`, `--start`, `--due` |
|
|
47
|
+
| Module ownership | Lead and members | Available in the API/UI; not set by this CLI |
|
|
48
|
+
| Module contents | Related work items | `module add`, `module issues`; membership can overlap across modules |
|
|
49
|
+
| Intake request | Title, description, priority | `intake create`; `intake update --name`, `--description`, `--priority` |
|
|
50
|
+
| Intake decision | Pending, rejected, snoozed, accepted, duplicate; snooze deadline; duplicate target | `intake update --status`, `--snooze-until`, `--duplicate-of` |
|
|
51
|
+
| Intake work properties | Assignees, labels, due date and other UI properties | Not exposed by intake commands; use normal `update` after acceptance |
|
|
52
|
+
| Intake channels | In-app submissions, public forms, email | CLI submits through the API; it does not configure forms/email |
|
|
53
|
+
|
|
54
|
+
The UI guide and API defaults are not interchangeable. The module guide says
|
|
55
|
+
new modules start in Backlog, while the tested API instance returned `planned`
|
|
56
|
+
when status was omitted. CLI examples therefore specify `--status planned`.
|
|
57
|
+
The UI can choose a work item state while accepting an intake request; the
|
|
58
|
+
current CLI/API acceptance path moves it to the default project state. A normal
|
|
59
|
+
`update --state` can then select a different state.
|
|
60
|
+
|
|
61
|
+
A focused check of the published CLI confirmed that adding a work item to a
|
|
62
|
+
second module preserves its first membership, and that intake acceptance moves
|
|
63
|
+
a request from pending/Triage into the normal Backlog state on the tested
|
|
64
|
+
instance. Temporary check data was deleted.
|
|
65
|
+
|
|
66
|
+
Field references: [module creation](https://developers.plane.so/api-reference/module/add-module),
|
|
67
|
+
[intake properties](https://docs.plane.so/core-concepts/intake), and
|
|
68
|
+
[intake updates](https://developers.plane.so/api-reference/intake-issue/update-intake-issue-detail).
|
|
69
|
+
|
|
70
|
+
## Compatibility details
|
|
71
|
+
|
|
72
|
+
Enabling intake on project creation requires a follow-up project PATCH to create
|
|
73
|
+
the queue. A creation flag alone can leave `intake_view=true` without an intake
|
|
74
|
+
record, causing the first submission to fail with HTTP 500. The CLI initializes
|
|
75
|
+
the queue explicitly and reports partial setup without encouraging a duplicate
|
|
76
|
+
project creation.
|
|
77
|
+
|
|
78
|
+
Cycle updates explicitly preserve `owned_by` when no owner is supplied: some
|
|
79
|
+
servers otherwise default it to the requesting user. Calendar dates are formatted
|
|
80
|
+
in the project's timezone; the JSON model keeps the API timestamps.
|
|
81
|
+
|
|
82
|
+
Expired snoozes can be filtered out of intake GET and ordinary triage work item
|
|
83
|
+
lookup. Update and delete therefore accept underlying work item UUIDs without
|
|
84
|
+
requiring an intake GET. A hidden readable reference cannot be resolved by these
|
|
85
|
+
API endpoints; the diagnostic points to `issueId` from an earlier JSON response.
|
|
86
|
+
|
|
87
|
+
## Remaining gaps
|
|
88
|
+
|
|
89
|
+
- Label updates and comment updates/deletions are not exposed.
|
|
90
|
+
- Cycle/module archive, delete and membership removal are not exposed; module
|
|
91
|
+
details cannot yet be edited. The planning tasks cover listing, creation,
|
|
92
|
+
membership and cycle transfer.
|
|
93
|
+
- This is an inventory of the implemented surface, not a claim to cover every
|
|
94
|
+
endpoint in every edition of Plane.
|
|
95
|
+
|
|
96
|
+
## Adding a command
|
|
97
|
+
|
|
98
|
+
1. Add the command and all options to `src/registry.ts`. The parser gets value
|
|
99
|
+
flags from the registry, including those of multiword commands.
|
|
100
|
+
2. Add an online handler to `src/dispatch.ts`. Both missing handlers and handlers
|
|
101
|
+
absent from the registry fail the command-set test.
|
|
102
|
+
3. Add a fixture invocation and valid option values to the registry suite. Test
|
|
103
|
+
the requested method, path and body, and assert observable output. Merely
|
|
104
|
+
accepting a flag in `--help` is insufficient.
|
|
105
|
+
4. Extend the live acceptance script when the command contributes to project
|
|
106
|
+
setup. Verify writes by reading them back, and clean up temporary data.
|
|
107
|
+
5. Update this table and README examples.
|
|
108
|
+
|
|
109
|
+
Reference: [projects](https://developers.plane.so/api-reference/project/add-project),
|
|
110
|
+
[labels](https://developers.plane.so/api-reference/label/add-label),
|
|
111
|
+
[states](https://developers.plane.so/api-reference/state/add-state),
|
|
112
|
+
[cycles](https://developers.plane.so/api-reference/cycle/transfer-cycle-work-items),
|
|
113
|
+
[modules](https://developers.plane.so/api-reference/module/add-module),
|
|
114
|
+
[intake](https://developers.plane.so/api-reference/intake-issue/overview).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "i-plane",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "CLI \u0434\u043b\u044f Plane \u0441 \u043f\u043b\u043e\u0442\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043f\u043e\u0434 \u0430\u0433\u0435\u043d\u0442\u0430",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist",
|
|
20
|
+
"docs/api-coverage.md",
|
|
20
21
|
"AGENTS.md",
|
|
21
22
|
"CLAUDE.md"
|
|
22
23
|
],
|