diff --git a/react-openapi/src/context/AppProvider.tsx b/react-openapi/src/context/AppProvider.tsx index fffbf88..b2d19c3 100644 --- a/react-openapi/src/context/AppProvider.tsx +++ b/react-openapi/src/context/AppProvider.tsx @@ -27,7 +27,7 @@ export function AppProvider({ specConfiguration, children }: AppProviderProps) { const spec = await loadSpec(specConfiguration.specUrl); - const allMessages = validateSpec(spec); + const allMessages = validateSpec(spec, specConfiguration); const errs = allMessages.filter((m) => m.type === "error"); const warns = allMessages.filter((m) => m.type === "warning"); diff --git a/react-openapi/src/spec-validator.ts b/react-openapi/src/spec-validator.ts index 510c92f..741ac85 100644 --- a/react-openapi/src/spec-validator.ts +++ b/react-openapi/src/spec-validator.ts @@ -1,6 +1,6 @@ -import type { OpenApiSpec, ValidationMessage } from "./types"; +import type { OpenApiSpec, ValidationMessage, SpecConfiguration } from "./types"; -export function validateSpec(spec: OpenApiSpec): ValidationMessage[] { +export function validateSpec(spec: OpenApiSpec, specConfig?: SpecConfiguration): ValidationMessage[] { const messages: ValidationMessage[] = []; const schemas = (spec.components?.schemas ?? {}) as Record; const paths = spec.paths ?? {}; @@ -13,7 +13,7 @@ export function validateSpec(spec: OpenApiSpec): ValidationMessage[] { messages.push({ type: "error", message: "Missing 'info.title'" }); } - if (!spec.servers?.[0]?.url) { + if (!spec.servers?.[0]?.url && !specConfig?.baseApiUrl) { messages.push({ type: "warning", message: "No 'servers[0].url' defined — provide 'baseApiUrl' in specConfiguration" }); }