Skip to content
This repository was archived by the owner on Mar 12, 2026. It is now read-only.
This repository was archived by the owner on Mar 12, 2026. It is now read-only.

feat: add recordings API support for trash/archive/unarchive operations #85

@brigleb

Description

@brigleb

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/12345

Resource-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 12345

List Trashed/Archived Items

bc4 recordings list --type Todo --status trashed
bc4 recordings list --type Message --status archived

Implementation Notes

  • The card archive operation already uses this API (internal/api/card.go:275)
  • Could add a generic RecordingOperations interface
  • Consider confirmation prompts for destructive operations
  • Trashed items are permanently deleted after 30 days

Priority

Medium - Enables proper resource lifecycle management across all types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions