From 590a5918dcf7ca0c2d74506da696a279dba3ca50 Mon Sep 17 00:00:00 2001 From: Maxwell Brown Date: Tue, 24 Jun 2025 18:35:01 -0400 Subject: [PATCH] support reference objects in responses --- .changeset/curly-toys-swim.md | 5 +++++ src/OpenApi.ts | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/curly-toys-swim.md diff --git a/.changeset/curly-toys-swim.md b/.changeset/curly-toys-swim.md new file mode 100644 index 0000000..68c16d2 --- /dev/null +++ b/.changeset/curly-toys-swim.md @@ -0,0 +1,5 @@ +--- +"@tim-smart/openapi-gen": patch +--- + +Support reference objects in OpenApi responses diff --git a/src/OpenApi.ts b/src/OpenApi.ts index c4e663c..b87b6c8 100644 --- a/src/OpenApi.ts +++ b/src/OpenApi.ts @@ -198,6 +198,9 @@ export const make = Effect.gen(function* () { let defaultSchema: string | undefined Object.entries(operation.responses ?? {}).forEach( ([status, response]) => { + if ("$ref" in response) { + response = resolveRef(response.$ref as string) + } if (response.content?.["application/json"]?.schema) { const schemaName = gen.addSchema( `${schemaId}${status}`, @@ -266,7 +269,7 @@ export class OpenApiTransformer extends Context.Tag("OpenApiTransformer")< operations: ReadonlyArray, ) => string } ->() {} +>() { } export const layerTransformerSchema = Layer.sync(OpenApiTransformer, () => { const operationsToInterface = (