Backend contract for SuperPi.Artifacts. Validation (name, size) happens before a call, so a
backend only stores and fetches. Implement it for another store, such as an S3-compatible bucket.
Summary
Callbacks
@callback list(conversation_id :: integer()) :: [ %{name: String.t(), size: non_neg_integer(), content_type: String.t()} ]