Skip to content

[Feature] API: Add DeleteStatus handler and archive endpoint #121

@mpaulosky

Description

@mpaulosky

Summary

The Statuses API is missing a Delete/Archive endpoint. Same gap as Categories — the domain model supports soft-delete but no handler or endpoint exists to trigger it.

Current State

StatusEndpoints.cs exposes:

  • GET /api/v1/statuses — List all
  • GET /api/v1/statuses/{id} — Get by ID
  • POST /api/v1/statuses — Create
  • PUT /api/v1/statuses/{id} — Update
  • No Delete/Archive endpoint

Work Required

Following the existing CQRS vertical slice pattern (mirror the Categories implementation):

1. Command + Handler

Create src/Api/Handlers/Statuses/DeleteStatusHandler.cs:

public record DeleteStatusCommand(string Id, string ArchivedBy) : IRequest<Result<bool>>;
  • Set ArchivedBy, ArchivedOn, Archived = true
  • Persist via IStatusRepository

2. Endpoint

Add to StatusEndpoints.cs:

app.MapDelete("/{id}", async (string id, ClaimsPrincipal user, ISender sender) => ...)
   .RequireAuthorization("Admin");

3. Repository

Verify IStatusRepository supports archive/update for the archived fields.

Acceptance Criteria

  • DELETE /api/v1/statuses/{id} returns 204 for valid admin request
  • Returns 404 when status not found
  • Returns 401/403 for non-admin requests
  • Archived status is not returned in default list
  • Handler tests pass (see linked test issue)

Files

  • src/Api/Handlers/Statuses/DeleteStatusHandler.cs (new)
  • src/Api/Handlers/Statuses/StatusEndpoints.cs
  • src/Api/Repositories/IStatusRepository.cs

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:yesReady to implementpriority:p2Next sprintrelease:backlogNot yet targetedsprint-3Sprint 3 — Full CRUD UI + ArchivesquadSquad triage inbox — Lead will assign to a membersquad:legolasAssigned to Legolas (Frontend Dev)squad:samAssigned to Sam (Backend Dev)type:featureNew capability

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions