From b91f2d47bca2b0a54c0affcb1eea4216aa7251be Mon Sep 17 00:00:00 2001 From: Guillermo Pages Date: Sat, 6 Dec 2025 22:00:01 +0100 Subject: [PATCH] fix: add missing scope and config_snapshot fields to createCompetition Backend requires scope and config_snapshot when creating competition without a template. Frontend now: - Defaults scope to 'facility' when facility_id is provided - Renames config to config_snapshot for backend compatibility - Provides empty config_snapshot when no template_id --- src/lib/api/competition-admin.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/lib/api/competition-admin.ts b/src/lib/api/competition-admin.ts index a67a536..5bd2471 100644 --- a/src/lib/api/competition-admin.ts +++ b/src/lib/api/competition-admin.ts @@ -263,10 +263,26 @@ export async function createCompetition( request: CreateCompetitionRequest ): Promise> { try { + // Build request body with proper field names for backend + const { config, ...rest } = request; + const body: Record = { + ...rest, + facility_id: facilityId, + scope: request.scope ?? 'facility', // Default to facility scope + }; + + // Backend expects config_snapshot, not config + if (config) { + body.config_snapshot = config; + } else if (!request.template_id) { + // Provide empty config_snapshot when creating without template + body.config_snapshot = {}; + } + const response = await apiFetch('/competitions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ ...request, facility_id: facilityId }), + body: JSON.stringify(body), }); const result = await handleApiResponse<{ competition: Competition }>(response);