-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
Summary
Add support for the Basecamp Recordings API to enable trash, archive, and unarchive operations across all resource types. This provides a unified way to manage the lifecycle of any Basecamp "recording" (todos, messages, documents, cards, comments, etc.).
API Support
The Basecamp API provides these recording operations:
# Trash a recording
PUT /buckets/{bucket_id}/recordings/{recording_id}/status/trashed.json
# Archive a recording
PUT /buckets/{bucket_id}/recordings/{recording_id}/status/archived.json
# Unarchive/restore a recording
PUT /buckets/{bucket_id}/recordings/{recording_id}/status/active.json
All return 204 No Content on success.
Additionally, there's a query endpoint:
GET /projects/recordings.json?type=Todo&status=trashed
Supported types: Comment, Document, Kanban::Card, Message, Todo, Upload, etc.
Proposed CLI Interface
Generic Commands
# Trash any recording
bc4 trash 12345 --project 67890
bc4 trash https://3.basecamp.com/.../todos/12345
# Archive any recording
bc4 archive 12345 --project 67890
bc4 archive https://3.basecamp.com/.../messages/12345
# Restore/unarchive
bc4 restore 12345 --project 67890
bc4 unarchive https://3.basecamp.com/.../documents/12345Resource-Specific Commands
# Todo-specific
bc4 todo trash 12345
bc4 todo archive 12345
bc4 todo restore 12345
# Message-specific
bc4 message trash 12345
bc4 message archive 12345
# Document-specific
bc4 document trash 12345
bc4 document archive 12345List Trashed/Archived Items
bc4 recordings list --type Todo --status trashed
bc4 recordings list --type Message --status archivedImplementation Notes
- The card archive operation already uses this API (
internal/api/card.go:275) - Could add a generic
RecordingOperationsinterface - Consider confirmation prompts for destructive operations
- Trashed items are permanently deleted after 30 days
Priority
Medium - Enables proper resource lifecycle management across all types.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels