// Returns an error if the failure cannot be converted.
// nolint:revive // cognitive-complexity is high but justified to keep each case together
apiFailure := &failurepb.Failure{
Message: f.Message,
StackTrace: f.StackTrace,
}
if f.Metadata != nil {
switch f.Metadata["type"] {
case failureTypeString: