Watched Dirs & Triggers API #69

Open
opened 2026-02-23 10:04:08 +00:00 by ottomata · 0 comments
Owner

Tasks

  • Create internal/api/handlers/files.go:

    Watched Dirs (Admin only):

    • GET /watched-dirs — list all watched directories
    • POST /watched-dirs — add directory. Body: { "path": "/data/uploads" }
    • DELETE /watched-dirs/:id — remove directory (cascades triggers)

    Triggers (Admin/Operator):

    • GET /jobs/:id/triggers — list triggers for a job
    • POST /jobs/:id/triggers — create trigger. Body: { "watched_dir_id": "...", "glob_pattern": "*.csv" }
    • DELETE /triggers/:id — delete trigger
    • PATCH /triggers/:id/toggle — enable/disable. Body: { "enabled": true }

    Files:

    • GET /files — list detected files (paginated). Filter: ?trigger_id=, ?job_id=
    • GET /files/:id — get file detail with trigger info and linked run

Acceptance Criteria

  • All endpoints functional with correct status codes and RBAC
  • Deleting a watched dir cascades to delete all its triggers
  • Non-Admin cannot manage watched dirs (returns 403)
### Tasks - [ ] Create `internal/api/handlers/files.go`: **Watched Dirs (Admin only):** - `GET /watched-dirs` — list all watched directories - `POST /watched-dirs` — add directory. Body: `{ "path": "/data/uploads" }` - `DELETE /watched-dirs/:id` — remove directory (cascades triggers) **Triggers (Admin/Operator):** - `GET /jobs/:id/triggers` — list triggers for a job - `POST /jobs/:id/triggers` — create trigger. Body: `{ "watched_dir_id": "...", "glob_pattern": "*.csv" }` - `DELETE /triggers/:id` — delete trigger - `PATCH /triggers/:id/toggle` — enable/disable. Body: `{ "enabled": true }` **Files:** - `GET /files` — list detected files (paginated). Filter: `?trigger_id=`, `?job_id=` - `GET /files/:id` — get file detail with trigger info and linked run ### Acceptance Criteria - [ ] All endpoints functional with correct status codes and RBAC - [ ] Deleting a watched dir cascades to delete all its triggers - [ ] Non-Admin cannot manage watched dirs (returns `403`)
ottomata added this to the Phase 7 project 2026-02-23 10:09:05 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ottomata/acsm#69
No description provided.