···1313 async executeImpl(req: AuthenticatedRequest, res: Response): Promise<any> {
1414 try {
1515 const { cardId } = req.params;
1616- const { collectionIds } = req.body;
1616+ const { collectionIds: collectionIdsParam } = req.query;
1717 const curatorId = req.did;
18181919 if (!curatorId) {
···2424 return this.badRequest(res, 'Card ID is required');
2525 }
26262727- if (!collectionIds || !Array.isArray(collectionIds)) {
2828- return this.badRequest(res, 'Collection IDs array is required');
2727+ if (!collectionIdsParam || typeof collectionIdsParam !== 'string') {
2828+ return this.badRequest(
2929+ res,
3030+ 'Collection IDs query parameter is required',
3131+ );
3232+ }
3333+3434+ const collectionIds = collectionIdsParam
3535+ .split(',')
3636+ .filter((id) => id.trim() !== '');
3737+3838+ if (collectionIds.length === 0) {
3939+ return this.badRequest(res, 'At least one collection ID is required');
2940 }
30413142 const result = await this.removeCardFromCollectionUseCase.execute({
+2-2
src/webapp/.storybook/vitest.setup.ts
···11-import * as a11yAddonAnnotations from "@storybook/addon-a11y/preview";
11+import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview';
22import { setProjectAnnotations } from '@storybook/nextjs-vite';
33import * as projectAnnotations from './preview';
4455// This is an important step to apply the right configuration when testing your stories.
66// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
77-setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]);77+setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]);