--- phase: 03-container-actions plan: 01 subsystem: api tags: [docker-api, telegram, n8n, container-lifecycle, fuzzy-matching] # Dependency graph requires: - phase: 02-docker-integration provides: Docker socket access, container list API, fuzzy matching logic provides: - Container start/stop/restart via Telegram commands - Action command routing in n8n workflow - Single-match immediate execution flow - Multiple-match placeholder for confirmation (Plan 03-02) affects: [03-02-confirmation-flow, 04-logs] # Tech tracking tech-stack: added: [] patterns: - "Docker API POST calls with curl -X POST" - "HTTP status code extraction with curl -w '%{http_code}'" - "Graceful shutdown timeout with ?t=10 parameter" - "Switch node routing by match count" key-files: created: [] modified: - n8n-workflow.json key-decisions: - "Treat HTTP 304 (already in state) as success" - "Use 10-second graceful timeout for stop/restart" - "Route by match count: 0, 1, >1, error" patterns-established: - "Action command pattern: start/stop/restart " - "Build curl command in Code node, execute in Execute Command node" - "Parse HTTP status in separate Code node for error handling" # Metrics duration: 12min completed: 2026-01-30 --- # Phase 03 Plan 01: Basic Container Actions Summary **Single-match container actions (start/stop/restart) execute immediately via Docker API POST calls with graceful timeout** ## Performance - **Duration:** 12 min - **Started:** 2026-01-30T10:00:00Z - **Completed:** 2026-01-30T10:12:00Z - **Tasks:** 3 - **Files modified:** 1 ## Accomplishments - Action command routing for start/stop/restart patterns - Fuzzy container matching with case-insensitive substring search - Docker API POST calls for container lifecycle actions - HTTP status code handling (204 success, 304 already-in-state, error codes) - Error handling for Docker connection failures and action errors ## Task Commits Each task was committed atomically: 1. **Task 1: Add action command routing to workflow** - `4848e7d` (feat) 2. **Task 2: Implement container matching and action execution** - `f466a29` (feat) 3. **Task 3: Handle action errors gracefully** - `2bd90c8` (feat) ## Files Created/Modified - `n8n-workflow.json` - Extended with action branch: Parse Action, Docker List for Action, Match Container, Check Match Count, Build Action Command, Execute Action, Parse Action Result, Send Action Result, error handlers ## Decisions Made - Treat HTTP 304 (container already in desired state) as success - user doesn't need to know it was already stopped/started - Use 10-second timeout (?t=10) for stop/restart to allow graceful shutdown - Route by matchCount with explicit error check (matchCount < 0) for Docker connection failures - Multiple match placeholder returns message indicating confirmation will come in next update ## Deviations from Plan None - plan executed exactly as written. ## Issues Encountered None ## User Setup Required None - no external service configuration required. ## Next Phase Readiness - Single-match actions fully functional - Ready for Plan 03-02: Confirmation flow for multiple matches - Inline keyboard buttons will use HTTP Request node (not native Telegram node) per RESEARCH.md --- *Phase: 03-container-actions* *Completed: 2026-01-30*