Deletes both the stored bytes and the MJ: Files record.
Optionalprovider: IMetadataProvidertrue when the blob was deleted. A false here means the caller should leave the
attachment row alone rather than orphan it.
Reads a stored file's content.
Optionalprovider: IMetadataProviderBase64-encoded content, or null when the file or its storage cannot be resolved.
Mints a pre-authenticated download URL for a stored file.
Preferred over Download when the consumer can fetch the URL itself — it avoids moving the bytes through this process.
Optionalprovider: IMetadataProviderThe URL, or null when one cannot be produced.
Stores bytes and creates the corresponding MJ: Files record.
Optionalprovider: IMetadataProviderThe created file id, or a structured failure. Never throws for an expected condition such as a missing storage configuration.
Blob operations an attachment needs, behind a seam so attachment policy does not depend on any particular storage implementation — or on there being one.
Implementations are responsible for the
MJ: Filesrecord alongside the bytes, because the two must not diverge: a catalog row without content, or content without a row, is worse than a failed upload.