## MODIFIED Requirements ### Requirement: Project operations The client SHALL provide methods to list all accessible projects (`GET /projects`), get a single project by ID (`GET /projects/{id}`), create a project (`POST /projects`), and delete a project (`DELETE /projects/{id}`). #### Scenario: List projects - **WHEN** `ListProjects` is called - **THEN** the client SHALL send `GET /projects` and return a slice of Project models #### Scenario: Get project - **WHEN** `GetProject` is called with a project ID - **THEN** the client SHALL send `GET /projects/{id}` and return a Project model #### Scenario: Create project - **WHEN** `CreateProject` is called with project fields (type, name, description) - **THEN** the client SHALL send `POST /projects` with the provided fields and return the created Project #### Scenario: Delete project - **WHEN** `DeleteProject` is called with a project ID - **THEN** the client SHALL send `DELETE /projects/{id}` ### Requirement: Board operations The client SHALL provide a method to get a single board by ID (`GET /boards/{id}`), list board actions (`GET /boards/{boardId}/actions`) with pagination support, create a board (`POST /projects/{projectId}/boards`), and delete a board (`DELETE /boards/{id}`). #### Scenario: Get board - **WHEN** `GetBoard` is called with a board ID - **THEN** the client SHALL send `GET /boards/{id}` and return a Board model including its included lists #### Scenario: List board actions - **WHEN** `ListBoardActions` is called with a board ID and limit - **THEN** the client SHALL send paginated `GET /boards/{boardId}/actions` requests and return a slice of Action models #### Scenario: Create board - **WHEN** `CreateBoard` is called with a project ID and board fields (name, position) - **THEN** the client SHALL send `POST /projects/{projectId}/boards` with the provided fields and return the created Board #### Scenario: Delete board - **WHEN** `DeleteBoard` is called with a board ID - **THEN** the client SHALL send `DELETE /boards/{id}`