{"record":{"id":"10d8ed44ed290e80","repo":"windmill-labs/windmill","slug":"please-fill-title-input","errorCode":null,"errorMessage":"Please fill title input","messagePattern":"Please fill title input","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"frontend/src/lib/components/triggers/http/OpenAPISpecGenerator.svelte","lineNumber":103,"sourceCode":"\n\tfunction getWebhookFilters() {\n\t\treturn webhookAndHttpRouteFilter.filter(isWebhookFilter)\n\t}\n\n\tfunction getHttpRouteFilters() {\n\t\treturn webhookAndHttpRouteFilter.filter(isHttpRouteFilter)\n\t}\n\n\tfunction buildInfo() {\n\t\tconst isTitle = !emptyString(title)\n\t\tconst isVersion = !emptyString(version)\n\n\t\tlet info: OpenapiV3Info | undefined = undefined\n\n\t\tif (isTitle && !isVersion) {\n\t\t\tthrow new Error('Please fill version input')\n\t\t} else if (!isTitle && isVersion) {\n\t\t\tthrow new Error('Please fill title input')\n\t\t} else if (isTitle && isVersion) {\n\t\t\tlet isContact =\n\t\t\t\t!emptyString(contactName) || !emptyString(contactUrl) || !emptyString(contactEmail)\n\t\t\tlet isLicense = !emptyString(licenseName) || !emptyString(licenseUrl)\n\t\t\tinfo = {\n\t\t\t\ttitle,\n\t\t\t\tversion,\n\t\t\t\tdescription,\n\t\t\t\tcontact: isContact\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tname: contactName,\n\t\t\t\t\t\t\turl: contactUrl,\n\t\t\t\t\t\t\temail: contactEmail\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t\tlicense: isLicense\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tname: licenseName,","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/frontend/src/lib/components/triggers/http/OpenAPISpecGenerator.svelte#L85-L121","documentation":"buildInfo() mirrors the version rule: a non-empty Version with an empty Title also yields an invalid OpenAPI info object, since title is required when info is present. It throws this error to force a complete title+version pair.","triggerScenarios":"In OpenAPISpecGenerator, filling Version but leaving Title empty, then generating the spec (via the info function).","commonSituations":"Auto-filling version like '1.0.0' but skipping title; form state where title was reset but version persisted.","solutions":["Enter a value in the Title input alongside the version","Clear the Version field if no info block is desired (info becomes undefined)","Mark title as required when version is set"],"exampleFix":"// before\ntitle: (empty)\nversion: 1.0.0\n// after\ntitle: My API\nversion: 1.0.0","handlingStrategy":"validation","validationCode":"if (version && !title) throw new Error('Please fill title input');","typeGuard":"function hasCompleteInfo(t: string, v: string): boolean {\n  return (!t && !v) || (t !== '' && v !== '');\n}","tryCatchPattern":"try { buildInfo(); } catch (e) {\n  if (e.message === 'Please fill title input') { focusField('title'); }\n  else throw e;\n}","preventionTips":["Make Title required whenever Version is filled","Default the title input to the trigger name","Validate title/version pairing before generating the spec"],"tags":["openapi","validation","form"],"backgroundTag":"schema-validation-failed","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}