feat(board): create, update, and delete agile boards #148
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/YT-93-board-crud"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds the three write verbs to the agile board surface, following the plan/execute,
--dry-run, and--yesconventions the project administration commands already use.board create <NAME> --project <SHORT>...posts/api/agiles,board update <BOARD>posts/api/agiles/<id>with only the settings the invocation named, andboard delete <BOARD> --yessendsDELETE /api/agiles/<id>and re-reads the board list so a delete the server ignored is reported. The MCP mirrors all three ascreate_board/update_board/delete_board, gated by the per-calldry_run.The
templatequery parameter on/api/agileswas verified against the live instance rather than assumed: an unknown name is rejected with400 No template with name <n>, so it really is parsed.kanbanandscrumare exposed;versionis a third name the server recognises but it is left off the flag so the surface matchesproject create --template, and the reason is recorded next tocreate_board.Several other live shapes drove the design and are recorded in comments beside the client functions. An
Agileupdate merges at the top level andsprintsSettingsmerges too, butswimlaneSettingsdoes not: posting it withoutfieldis rejected with400 FilterField is null, and postingnullis what turns swimlanes off. The instance does expose a per-column subresource that takes a narrower write than rewritingcolumnSettings, so--wip <COLUMN>=<MIN>:<MAX>posts tocolumnSettings/columns/<id>rather than replacing the whole column list; the dry run lists those follow-up writes with their own endpoint and body. SettingvisibleForalone leavesvisibleForProjectBasedtrue, which makes the group inert, so--visible-forand--updateable-byclear the matching flag with the group.Name resolution is split from the write for both writes (
plan_create_board/plan_update_board), so--dry-runprints the byte-exact body with the name-to-id work in a separateresolvedblock. Every name-taking flag refuses an ambiguous name and lists the candidates instead of guessing. The same sweep found two pre-existing silent picks in the resolvers these verbs depend on:/api/groupsis polymorphic, so aProjectTeamcan share a name with aNestedGroup, and YouTrack does not enforce unique board names (probed: two creates with the same name both succeed), which meantboard deletecould have removed an arbitrary one of two. Both now error and name the candidates.#YT-93