usebruno/bruno · error · Error

Unsupported item type: ${itemType}

Error message

Unsupported item type: ${itemType}

What it means

`parseItem`'s switch handles `http|graphql|grpc|websocket|script|app` (and explicitly errors on `folder`); any other resolved `itemType` falls through to the default and throws with the offending type. This signals an item of a kind the parser does not recognize.

Source

Thrown at packages/bruno-filestore/src/formats/yml/parseItem.ts:98

        return parseGraphQLRequest(ocItem as GraphQLRequest);

      case 'grpc':
        return parseGrpcRequest(ocItem as GrpcRequest);

      case 'websocket':
        return parseWebsocketRequest(ocItem as WebSocketRequest);

      case 'script':
        return parseScript(ocItem as ScriptFile);

      case 'app':
        return parseApp(ocItem as unknown as AppFile);

      case 'folder':
        throw new Error('Folder items should be handled separately using parseFolder');

      default:
        throw new Error(`Unsupported item type: ${itemType}`);
    }
  } catch (error) {
    console.error('Error parsing item:', error);
    throw error;
  }
};

export default parseItem;

View on GitHub (pinned to 9bdd81c7bd)

Solutions

  1. Correct `info.type` to one of: http, graphql, grpc, websocket, script, app.
  2. Upgrade bruno-filestore to a version that supports the item type you encountered.
  3. Open and re-save the item in a compatible Bruno version to rewrite the type.
  4. Inspect the message's reported `itemType` to find the exact bad value.

Example fix

// before
//   info:
//     type: grpc-request

// after
//   info:
//     type: grpc
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = new Set(['http','graphql','grpc','websocket','script','app']);
function assertSupportedType(t) {
  if (!SUPPORTED.has(t)) throw new Error(`Unsupported item type: ${t}`);
}

Type guard

const ITEM_TYPES = ['http','graphql','grpc','websocket','script','app'] as const;
type ItemType = typeof ITEM_TYPES[number];
function isItemType(t: unknown): t is ItemType {
  return typeof t === 'string' && (ITEM_TYPES as readonly string[]).includes(t);
}

Try / catch

try { parseItem(yml); }
catch (e) { if (/Unsupported item type/.test(e.message)) { /* upgrade or rewrite */ } else throw e; }

Prevention

When it happens

Trigger: An item file with `info.type` (or root `type`) set to a value outside the supported set — a typo, a future/legacy type, or an experimental item kind.

Common situations: Typo like `htp` or `grpc-request`; a newer Bruno version wrote an item type this older parser can't read; a custom/edited type field; a value copied from a collection manifest into an item file.

Related errors


AI-assisted analysis of usebruno/bruno@9bdd81c7bd (2026-08-13). Data as JSON: /api/errors/944cf6396b04a557. Report an issue: GitHub.